代码之家  ›  专栏  ›  技术社区  ›  user752746

MongoDB按id获取文档嵌套数组

  •  1
  • user752746  · 技术社区  · 8 年前

    我有一个带有嵌套附件数组的流程文档,我想返回获取 文件名 具有进程id和附件id。

    enter image description here

    我尝试了许多选项,最近的尝试仍然返回附件数组中的所有项目。我只想要与过去的附件id匹配的附件。

    db.getCollection('processes').find(
    {$and: [ { "_id" : ObjectId("5a9455d7854cd987a40b1ba4") }, 
    { "attachments._id" : ObjectId("5a983da6201ba5a2302fb38f") }]},
    {'attachments._id': 1, 'attachments.fileName': 1}
    )
    

    非常感谢您的任何建议,谢谢!

    1 回复  |  直到 8 年前
        1
  •  2
  •   mickl    8 年前

    您可以使用 $elemMatch 在投影中,要从嵌套数组中仅获取一个子文档,请执行以下操作:

    db.getCollection('processes').find(
        { "_id" : ObjectId("5a9455d7854cd987a40b1ba4") },
        { attachments: { $elemMatch: { _id: ObjectId("5a983da6201ba5a2302fb38f") } } } )