1

$pull更新クエリを使用して (ドキュメントを削除する目的で) ドキュメントへの参照を削除しようとしていますが、何も起こっていないようです。

次のMongoクエリを手動で実行できます

db.collection.update({}, {
    $pull: {
        'field': {'$id': ObjectId("xxxxxxxx")}
    }
}, false, true)

これは正常に動作します。Doctrine の ODM で同じことをしようとしても、期待される結果もエラー メッセージも得られません。これまでの内容は次のとおりです

$id = new MongoId("xxxxxxxx");

$qb = $repo->createQueryBuilder();
$qb->update();
$qb->field('field')->pull(array('$id' => $id));
$qb->getQuery()->execute();

私が間違っていることについてのヒントはありますか?

4

2 に答える 2

6

ああ、Doctrineコードを調べた後、ついにそれを見つけました...

multiオプションをに渡す必要がありますMongoCollection::update()

$qb->getQuery(array('multiple' => true))->execute();
于 2011-08-24T09:12:13.150 に答える
-3
 $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();
于 2012-04-18T09:35:34.960 に答える