让我们考虑以下“文章”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 }
之类的东西。有类似的东西吗?我该怎么办?
非常感谢
答案 0 :(得分:0)
不,如果不知道密钥,就没有简单的方法可以做到这一点。
最好的方法是稍微更改一下文档结构:
{
"content" : "Helo World",
"check" : [{
"type" : "grammar",
"done" : true,
"result" : "fail"
},{
"type" : "spelling",
"done" : false
}]
}
这样您就可以使用db.find({'check.done' : true})
轻松搜索。此外,您可以在该字段上添加索引以使其超快