2013-11-25 73 views
-1

我把這個例子:

db.inventory.update({ tags: { $nin: [ "appliances", "school" ] } }, { $set: { sale: false } }) 

形式mongodb.org網站。

每當我嘗試多次使用$ nin,find_and_modify都會失敗。 Whan我想實現:

db.inventory.update({ tags: { $nin: [ "appliances", "school" ]}, owners: {$nin : ["a","b"] }, { $set: { sale: false } }) 

但似乎我不允許使用$ nin多次。我知道$ push不能像那樣使用,所以我只需在多個字段上使用$ push一次。但是,如何將它用於$ nin?

+0

您能否提供實際的查詢和示例文檔?你可以在查詢中多次使用'$ nin',所以我想你的問題在別的地方。 – zero323

回答

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() 

這表明只有一個問題:你做錯了什麼。