php - Doctrine Mongo 更新 $pull 查询不起作用

标签 php mongodb doctrine doctrine-odm

我正在尝试使用 $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();

关于我做错了什么的任何提示?

最佳答案

啊,翻遍了 Doctrine 代码终于找到了...

必须将 multi 选项传递给 MongoCollection::update()

$qb->getQuery(array('multiple' => true))->execute();

关于php - Doctrine Mongo 更新 $pull 查询不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7171627/

相关文章:

symfony - Doctrine 扩展实体

php - MySQL通过过滤器选择产品

php - 同一行的两个 INSERT INTO 语句 SQL/php

javascript - 单击处理表单的提交按钮后弹出图像

php - 未找到类 'App\Http\Controllers\View'

mysql - 这个简单的 sql 模式应该如何在 Mongodb 中建模

MongoDB 查询没有返回结果

javascript - 在表示 ObjectID 的字符串数组中查找 mongoose ObjectID 时出现问题

php - Symfony 将 Doctrine Manager 实例注入(inject)到 Controller 方法参数中

php - 如何控制在 symfony1.4 任务中从 database.yml 中选择哪个连接