MongoDB通过id获取文档嵌套数组

问题描述 投票:0回答:1

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

enter image description here

我尝试了很多选项,我的最新尝试仍然返回附件数组中的所有项目。我只想要与附件ID相匹配的附件。

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

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

mongodb mongoose
1个回答
1
投票

您可以在投影中使用$elemMatch从嵌套数组中只获取一个已过滤的子文档:

db.getCollection('processes').find(
    { "_id" : ObjectId("5a9455d7854cd987a40b1ba4") },
    { attachments: { $elemMatch: { _id: ObjectId("5a983da6201ba5a2302fb38f") } } } )
© www.soinside.com 2019 - 2024. All rights reserved.