我正在尝试使用$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();
关于我做错了什么的提示?
答案 0 :(得分:5)
啊,在拖曳了Doctrine代码之后终于找到了它......
必须将multi
选项传递给MongoCollection::update()
$qb->getQuery(array('multiple' => true))->execute();
答案 1 :(得分:-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();