在 Mongo 中使用多个条件过滤

Joe*_*Joe 2 python mongodb pymongo

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

foo = db.collection.find({
        "data": { "$ne": 400 }
    })
Run Code Online (Sandbox Code Playgroud)

我试过:

foo = db.collection.find({
        "data": { "$ne": 400 },
        "data": { "$ne": 504 }
    })
Run Code Online (Sandbox Code Playgroud)

foo = db.collection.find({
        "data": { "$ne": 400, "$ne": 504 }
    })
Run Code Online (Sandbox Code Playgroud)

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

Jam*_*Lim 5

您正在寻找$nin.

根据文档

$nin 选择文档,其中:

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

尝试

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