我举了这个例子:
db.inventory.update( { tags: { $nin: [ "appliances", "school" ] } }, { $set: { sale: false } } )
组成mongodb.org网站。
每当我尝试多次使用$ nin时,find_and_modify就会失败。我想实现的是:
db.inventory.update( { tags: { $nin: [ "appliances", "school" ]}, owners: {$nin : ["a","b"] }, { $set: { sale: false } } )
但似乎我不允许多次使用$ nin。我知道$ push不能像那样使用,所以我只需要在多个字段上使用$ push。但如何将它用于$ nin?
答案 0 :(得分:1)
您可以多次使用$ nin。这是一个例子:
db.a.insert({odd : [1, 3, 5, 7, 9], even : [0, 2, 4, 6, 8]})
db.a.find({
odd : {$nin : [2, 6]},
even : {$nin : [3, 7, 9]}
}); // will return a document
db.a.find({
odd : {$nin : [2, 6, 1]},
even : {$nin : [3, 7, 9]}
}); // will NOT return a document because first odd has 1
db.a.find({
odd : {$nin : [2, 6, 1]},
even : {$nin : [3, 7, 9]}
}); // will NOT return a document because second even has 2
如果能找到它,那么它也可以正确修改它
db.a.update(
{odd : {$nin : [2, 6]}, even : {$nin : [3, 7, 9]}},
{$set : {'correct' : 1}}
)
db.a.find().pretty()
这表明只有一个问题:你做错了什么。