如何在多个组合字段中使用过滤器查找集合中的文档?

时间:2015-12-14 09:33:38

标签: mongodb mongodb-query

以下是一些文件:

/* 1 */
{
    "_id" : ObjectId("566e80fcddf99fd898a11ad8"),
    "username" : "dummy_0",
    "score" : 10
}

/* 2 */
{
    "_id" : ObjectId("566e80fcddf99fd898a11ad9"),
    "username" : "dummy_1",
    "score" : 20
}

/* 3 */
{
    "_id" : ObjectId("566e80fcddf99fd898a11ada"),
    "username" : "dummy_1",
    "score" : 30
}

我想获得所有文件,其中不存在这对夫妇(用户名/分数)。

例如,如果我选择username: dummy_1score: 20,我应该检索对象1和3。

首先我尝试了:

db.foobar.find({ score: { $ne: 20}, username: { $ne: 'dummy_1'}})

但它显然不起作用。

你知道我怎么能做到这一点?

3 个答案:

答案 0 :(得分:3)

您可以使用逻辑$or运算符查询如下。

db.foobar.find( { 
    $or: [ 
        { "username": { $ne: "dummy_1" } }, 
        { "score": { $ne: 20 } } 
    ] 
})

答案 1 :(得分:0)

您可以使用逻辑file1...n.txt运算符查询如下。



$or




它将返回夫妻(用户名/分数)不存在的所有文件。

答案 2 :(得分:-1)

您需要使用"和"运营商。你可以尝试下面的一个看看。

db.foobar.find({ $and: [{score: { $ne: 20}}, {username: { $ne: 'dummy_1'}}]})