Pregunta

Utilizo Doctrine 2 ODM MongoDB (esto y dependencias todas las últimas de Git) + Php Mongo Extension (V1.1.4) + Mongo (V1.8.3 x64 más reciente)

En varios casos, sucede que cuando cambio una entidad, no se actualiza

En una entidad integrada tengo una referencia de espalda a su padre, para resolver http://groups.google.com/group/doctrine-dev/browse_thread/thread/016422b2cc9dcec9??pli=1 (¿Cómo obtener el documento principal dentro del documento incrustado?) Sin usar funcionalidades internas como unitarfwork: esto puede o no ser relevante, no lo sé ... espero que no (no (Mi pregunta si podría no tener respuesta en el IRC hasta ahora)

Sin embargo, un solo cambio en uno de los documentos integrados del personaje desencadena estas consultas (Realmente debería ser relevante solo para él, ha habido al ras y una condición dentro del registrador en la bandera que se estableció nuevamente antes del cambio)

Volcado de registrador:

array(6) {
   "update" => TRUE
   "query" => array(1) {
      "_id" => MongoId(1) {
         "$id" => "4e3143be662c32400d000006" (24)
      }
   }
   "newObj" => array(1) {
      "$set" => array(2) {
         "components.destructible.hp" => 99.28706276
         "options.character" => array(3) {
            "$ref" => "characters" (10)
            "$id" => MongoId(1) { ... }
            "$db" => "nuclearRain" (11)
         }
      }
   }
   "options" => array(0) 
   "db" => "someDB" (11)
   "collection" => "characters" (10)
}
array(6) {
   "update" => TRUE
   "query" => array(1) {
      "_id" => MongoId(1) {
         "$id" => "4e553306662c32680800054b" (24)
      }
   }
   "newObj" => array(1) {
      "$set" => array(1) {
         "createdBy" => array(3) {
            "$ref" => "characters" (10)
            "$id" => MongoId(1) { ... }
            "$db" => "nuclearRain" (11)
         }
      }
   }
   "options" => array(0) 
   "db" => "someDB" (11)
   "collection" => "worlds" (6)
}
array(6) {
   "update" => TRUE
   "query" => array(1) {
      "_id" => MongoId(1) {
         "$id" => "4e553306662c32680800054c" (24)
      }
   }
   "newObj" => array(1) {
      "$set" => array(1) {
         "world" => array(3) {
            "$ref" => "worlds" (6)
            "$id" => MongoId(1) { ... }
            "$db" => "nuclearRain" (11)
         }
      }
   }
   "options" => array(0) 
   "db" => "someDB" (11)
   "collection" => "games" (5)
}

Código de inicialización: http://pastebin.com/1dkagqry

"componentes.destructible.hp" => 99.28706276 es la parte central -> Sin embargo, este cambio nunca se refleja en el DB

  • No hay error de PHP/excepción activado
  • El registro de Mongo no muestra errores
  • En general, el Mongo y la doctrina Odm Mongo funciona bien, las entidades se persisten, actualizan, se eliminan ...

¿Dónde puedo buscar más o qué puedo hacer para resolver este problema? Gracias

¿Fue útil?

Solución

Es incómodo, pero el problema es que quería que losdocumentos incrustados se indexan (como una matriz asociativa) ... Sin embargo, esto se realizó en una propiedad real mantenida por doctrina, por lo que provocó volver a empujar el incremento incrustado, descartar los cambios

Otros consejos

 $friend = Zend_Registry::get('doctrine')->getDocumentManager()->createQueryBuilder('App\document\Message')->update()->field('unread')->set(TRUE)->field('viewer_id')->equals(10001)-> getQuery(array('multiple' => true))->execute();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top