在Mongo中使用多个条件进行过滤

时间:2013-08-15 16:58:33

标签: python mongodb pymongo

在Mongo(特别是pymongo)中,我的目标是能够排除不等于多个值之一的记录。在此示例中,数据不是504或400.我知道我可以使用以下内容排除不包含单个值的记录:

foo = db.collection.find({
        "data": { "$ne": 400 }
    })

我试过了:

foo = db.collection.find({
        "data": { "$ne": 400 },
        "data": { "$ne": 504 }
    })

foo = db.collection.find({
        "data": { "$ne": 400, "$ne": 504 }
    })

...但在这两种情况下,似乎只进行最后一次比较。我仍然得到数据为400的记录。我怎么写这个以便在两者上过滤?换句话说,我怎样才能执行“数据不等于以下任何一个[...]”?

1 个答案:

答案 0 :(得分:4)

您正在寻找$nin

根据documentation

  

$nin选择以下文件:

     
      
  • field值不在指定数组或
  • 中   
  • field不存在。
  •   

尝试

foo = db.collection.find({
    "data": { "$nin": [504, 400] },
})