【发布时间】:2020-09-18 12:23:18
【问题描述】:
如果我有一个像这样结构的数据作为集合中的单个文档:
{
_id: ObjectId("firstid"),
"name": "sublimetest",
"child": {
_id: ObjectId("childid"),
"name": "materialtheme"
}
}
有没有办法通过 id "childid" 搜索嵌入的文档? 因为 mongo 不索引嵌入文档的 _id 字段(如果我在这里错了,请纠正我), 因为这个查询不起作用: db.collection.find({_id:"childid"});
如果有任何其他文档数据库适合这种结构为树的检索数据,请建议我,其中要求是:
- 无需发出联接即可查询子级
- 在树中找到任何节点的速度与找到根节点一样快,就好像所有这些节点都作为单独的文档存储在一个集合中一样。
为什么这不是建议的问题的重复: 潜在重复问题,使用点符号查询文档。但是如果文档嵌套了 7 层怎么办?在这种情况下,不适合使用点表示法编写查询。我想要的是,所有文档,无论是顶级文档还是嵌套文档,如果它们具有 _id 字段,都应该在 _id 索引的存储桶中,这样当您搜索 db.collection.find({_id: "asdf"} ),它应该考虑嵌套的文档也具有匹配“asdf”的_id字段。简而言之,就好像内部文档没有嵌套,而是与外部文档平行。
【问题讨论】:
-
这能回答你的问题吗? stackoverflow.com/questions/30044792/…
-
这能回答你的问题吗? MongoDB: How to find a document by an id inside a nested document --> 将其设为 dup
-
@adamgy,我在答案中添加了解释,说明为什么这不是重复的。
-
@whoami,我在答案中添加了解释,说明为什么这不是重复的。
-
你可以在嵌入式数组上放置索引
标签: mongodb mongodb-query