【问题标题】:Mongodb query with multiple $nin具有多个 $nin 的 Mongodb 查询
【发布时间】:2013-11-25 21:48:19
【问题描述】:

我举了这个例子:

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怎么能用呢?

【问题讨论】:

  • 能否提供实际查询和示例文档?您可以在查询中多次使用$nin,所以我猜您的问题出在其他地方。

标签: ruby mongodb mongodb-ruby


【解决方案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()

这表明只有一个问题:你做错了什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-27
    • 1970-01-01
    相关资源
    最近更新 更多