【问题标题】:Mongodb: searching embedded documents by the '_id' fieldMongodb:通过“_id”字段搜索嵌入文档
【发布时间】: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"});

如果有任何其他文档数据库适合这种结构为树的检索数据,请建议我,其中要求是:

  1. 无需发出联接即可查询子级
  2. 在树中找到任何节点的速度与找到根节点一样快,就好像所有这些节点都作为单独的文档存储在一个集合中一样。

为什么这不是建议的问题的重复: 潜在重复问题,使用点符号查询文档。但是如果文档嵌套了 7 层怎么办?在这种情况下,不适合使用点表示法编写查询。我想要的是,所有文档,无论是顶级文档还是嵌套文档,如果它们具有 _id 字段,都应该在 _id 索引的存储桶中,这样当您搜索 db.collection.find({_id: "asdf"} ),它应该考虑嵌套的文档也具有匹配“asdf”的_id字段。简而言之,就好像内部文档没有嵌套,而是与外部文档平行。

【问题讨论】:

标签: mongodb mongodb-query


【解决方案1】:

您可以使用dot notation:

db.posts.find({"child._id": "childid"})

【讨论】:

  • 我想,你想使用ObjectId类。
猜你喜欢
  • 2015-05-08
  • 1970-01-01
  • 2017-05-31
  • 1970-01-01
  • 2015-11-08
  • 2012-06-15
  • 2020-03-14
  • 2011-05-24
  • 1970-01-01
相关资源
最近更新 更多