mongodb"更新" +" $或"组合没有按预期工作

时间:2016-04-15 12:41:11

标签: mongodb

我正在运行以下脚本来使用$或operator更新数据。

db.getCollection('test').update( 
    {$or: [{c1:true, c2: true  }] } ,
    {$set: {rs:  true }},
    {multi:true}
)

预计所有后续行都应该更新,但只有第3行和第3行。 4美元,或者作为$和$工作。

/ * 1 * / {     " C1" :是的 }

/ * 2 * / {     " C2" :是的 }

/ * 3 * / {     " C1" :真的,     " C2" :是的 }

/ * 4 * / {     " C1" :真的,     " C2" :是的 }

以下是屏幕截图:http://i.stack.imgur.com/A5Qhn.jpg

1 个答案:

答案 0 :(得分:1)

$or查询运算符采用一组查询表达式对象,但是您将两个术语都传递到单个对象中,使其表现为AND。

相反,将每个$or术语放在数组中自己的对象中,如下所示:

db.getCollection('test').update( 
    {$or: [{c1:true}, {c2: true}]},
    {$set: {rs: true}},
    {multi:true}
)