0

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

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

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

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

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

因为我以后可能会添加新check的。

我找不到允许我这样做的语法。我会期待类似{ ["check.$any.done"] = false }或喜欢的东西{ ["check..done"] = false }。是否存在类似的东西?我应该如何进行?

非常感谢

4

1 回答 1

0

不,在不知道密钥的情况下,没有简单的方法可以做到这一点。

最好的方法是稍微改变你的文档结构:

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

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

于 2013-11-08T10:48:52.677 回答