在mongo中,如何查找具有给定键和值的所有文档,而不管该键在文档的键/值层次结构中的位置如何?
例如,输入键roID
和值5
将同时匹配:
{
roID: '5'
}
和
{
other: {
roID: '5'
}
}
最佳答案
做这件事没有固定的方法。您可能必须递归地扫描每个匹配的文档以尝试定位该属性。不推荐。您可能想重新构造数据,或者将其操作为更统一的格式,以便查询更容易(更快)。
如果所需的键出现在固定数量的不同位置,则可以使用$or
运算符扫描所有可能的键。
以您的示例文档为例,您的查询将如下所示:
db.data.find( { "$or": [
{ "roID": 5 },
{ "other.roID": 5 },
{ "foo.bar.roID": 5 },
{ any other possbile locations of roID },
...
] } )