MongoDB не обновляется - PullRequest
       23

MongoDB не обновляется

1 голос
/ 05 сентября 2011

Я использую Doctrine 2 ODM \ MongoDB (это и все последние зависимости от GIT) + PHP Mongo расширение (v1.1.4) + Mongo (v1.8.3 x64 самое позднее)

В некоторых случаях бывает, что когдаЯ изменяю сущность, она не обновляется

Во встроенной сущности у меня есть обратная ссылка на ее родителя, чтобы решить http://groups.google.com/group/doctrine-dev/browse_thread/thread/016422b2cc9dcec9?pli=1 (Как получить родительский документ во встроенном документе?) Без использованиявнутренние функции, такие как UnitOfWork - это МОЖЕТ или МОЖЕТ не иметь отношения, я не знаю ... Я надеюсь, что нет ( мой вопрос, мог ли он остаться без ответа на IRC до сих пор )

Однако одно изменение во одном из встроенных документов Character запускает эти запросы ( действительно должно относиться только к нему, перед ним произошла очистка, и внутри логгера возникло условие, установленное снова прямо перед изменением )

Дамп логгера:

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)
}

Код инициализации: http://pastebin.com/1dKagqry

"components.destructible.hp" => 99.28706276 is основная часть -> все же это изменение никогда не отражается в DB

  • нет ошибок php / вызвало исключение
  • В журнале mongo нет ошибок
  • обычноMongo и Doctrine \ ODM \ Mongo работают нормально, сущности сохраняются, обновляются, удаляются ...

Где можно продолжить поиск или что можно сделать, чтобы решить эту проблему? Спасибо

Ответы [ 2 ]

0 голосов
/ 18 апреля 2012
 $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();
0 голосов
/ 18 сентября 2011

Это неудобно, но проблема в том, что я хотел индексировать EmbeddedDocuments (например, ассоциативный массив) ... однако это было сделано для фактического свойства, поддерживаемого Doctrine, поэтому он вызвал повторное нажатие EmbeddedDocument, отменив изменения

...