mongodb - 在 Mongo 对象层次结构中的任何位置查询具有值的键

标签 mongodb

在 Mongo 中,如何找到具有给定键和值的所有文档,无论该键出现在文档的键/值层次结构中的哪个位置?

例如,输入键 roID 和值 5 将同时匹配:

{
  roID: '5'
}

{
  other: {
    roID: '5'
  }
}

最佳答案

没有内置方法可以做到这一点。您可能必须递归扫描每个匹配的文档才能尝试找到该属性。 不推荐。您可能需要考虑重组数据或将其处理为更统一的格式,以便更容易(更快)查询。


如果您想要的 key 出现在固定数量的不同位置,您可以使用 $or 运算符来扫描所有可能性。

以您的示例文档为例,您的查询将如下所示:

db.data.find( { "$or": [
  { "roID": 5 },
  { "other.roID": 5 },
  { "foo.bar.roID": 5 },
  { any other possbile locations of roID },
  ...
] } )

关于mongodb - 在 Mongo 对象层次结构中的任何位置查询具有值的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25970625/

相关文章:

mongodb - Nodejs/ Mongoose : connect to db that's using replica sets

mongodb - 在查询中使用大写字母时,elasticsearch 将不起作用

arrays - Mongodb 大数组或查询

javascript - Mongoose 保存嵌套的对象数组 - Node.js

mongodb - 如何在最近时间的集合中查找排序/查询

c# - 如何从 MongoDB 中的 ChangeStream 过滤对特定字段的更新

mongodb - Mongoose 验证崩溃应用程序

java - 使用 Spring 登录 Mongodb

java - Spring Data + Mongo- 无分组字段求和

mongodb - 在 Mongo 集合中搜索对象数组