如何在mongodb中替换数组字段中的元素
字段标记是场景文档中的数组。我想将数组中的元素“Bad”替换为“Good”,如下所示:如何在mongodb中替换数组字段中的元素,mongodb,doctrine-odm,Mongodb,Doctrine Odm,字段标记是场景文档中的数组。我想将数组中的元素“Bad”替换为“Good”,如下所示: db.scenes.update({ 'tags': 'Bad' }, { $set: { 'tags.$' : 'Good' } }, { 'multi':true}); 我不知道在教义中怎么做。我试过了 $dm->createQueryBuilder('SceneBundle:Scene') ->update() ->field('tags.$'
db.scenes.update({ 'tags': 'Bad' }, { $set: { 'tags.$' : 'Good' } }, { 'multi':true});
我不知道在教义中怎么做。我试过了
$dm->createQueryBuilder('SceneBundle:Scene')
->update()
->field('tags.$')->set($tag)
->field('tags')->equals($oldTag)
->multiple(true)
->getQuery()
->execute();
但不是工作
谢谢。这个函数没有一个替换函数,但是你可以在一个查询中完成它,方法是将所有的“坏”拉出,然后将“好”推入
db.scenes.update({ 'tags': 'Bad' }, { $pull: { 'tags' : 'Bad' }, $push: { 'tags' : 'Good' } }, { 'multi':true});
等效原则应为:
$dm->createQueryBuilder('SceneBundle:Scene')
->update()
->field('tags')->pull('Bad')
->field('tags')->push('Good')
->field('tags')->equals('Bad')
->multiple(true)
->getQuery()
->execute();
请参阅这里的条令文档:已经很久了,但为了不在没有好答案的情况下离开这篇文章,我找到了一个可以帮助我们的链接() 问题是MongoDB不允许在服务器上执行多个操作 同一更新调用中的相同属性。这意味着 操作必须在两个单独的原子操作中发生
不,这不起作用。刚开始我写了这篇文章,mongod抱怨说:
code
(字段名不允许使用修饰符重复)嗯,可能是三个。需要先找到要修改的文档在mongo中不需要做两次。然而,我不能流利地回答你的问题。尝试一些选项并在这里发布答案。这对我来说不合适errmsg:'例外:不能同时更新'tags\'和'tags\'。
我不知道什么是原则,但这里有一些建议。