在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 },
  ...
] } )

09-25 21:40