Mongodb:通过“_id”字段搜索嵌入文档
Posted
技术标签:
【中文标题】Mongodb:通过“_id”字段搜索嵌入文档【英文标题】:Mongodb: searching embedded documents by the '_id' field 【发布时间】: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字段。简而言之,就好像内部文档没有嵌套,而是与外部文档平行。
【问题讨论】:
这能回答你的问题吗? ***.com/questions/30044792/… 这能回答你的问题吗? MongoDB: How to find a document by an id inside a nested document --> 将其设为 dup @adamgy,我在答案中添加了解释,说明为什么这不是重复的。 @whoami,我在答案中添加了解释,说明为什么这不是重复的。 你可以在嵌入式数组上放置索引 【参考方案1】:您可以使用dot notation:
db.posts.find("child._id": "childid")
【讨论】:
我想,你想使用ObjectId
类。以上是关于Mongodb:通过“_id”字段搜索嵌入文档的主要内容,如果未能解决你的问题,请参考以下文章