查找任何属性符合给定条件的文档

时间:2013-11-08 10:34:48

标签: mongodb find

让我们考虑以下“文章”MongoDB文档:

{ 
    "content" : "Helo World"
    "check" : {
        "grammar" : {
            "done" : true
            "result" : "fail"
        },
        "spelling" : {
            "done" : false
        }
    }
}

我想查询集合中的所有“文章”文档,其中任何check个对象都具有属性"done" : false

我不想使用像这样的简单“OR”子句:

["$or"] = {
    { ["check.grammar.done"] = false },
    { ["check.spelling.done"] = false }
}

因为我将来可能会添加新的check

我找不到允许我这样做的语法。我希望{ ["check.$any.done"] = false }或类似{ ["check..done"] = false }之类的东西。有类似的东西吗?我该怎么办?

非常感谢

1 个答案:

答案 0 :(得分:0)

不,如果不知道密钥,就没有简单的方法可以做到这一点。

最好的方法是稍微更改一下文档结构:

{ 
    "content" : "Helo World",
    "check" : [{
        "type" : "grammar",
            "done" : true,
            "result" : "fail"
        },{
        "type" : "spelling",
            "done" : false
        }]
}

这样您就可以使用db.find({'check.done' : true})轻松搜索。此外,您可以在该字段上添加索引以使其超快