我有一个带有嵌套附件数组的进程文档,我想返回带有进程_id和附件_id的 fileName 。
我尝试了很多选项,我的最新尝试仍然会返回附件数组中的所有项目。我只想要与附件ID相匹配的附件。
db.getCollection('processes').find(
{$and: [ { "_id" : ObjectId("5a9455d7854cd987a40b1ba4") },
{ "attachments._id" : ObjectId("5a983da6201ba5a2302fb38f") }]},
{'attachments._id': 1, 'attachments.fileName': 1}
)
非常感谢任何建议,谢谢!
答案 0 :(得分:1)
您可以在投影中使用$elemMatch从嵌套数组中仅获取一个已过滤的子文档:
db.getCollection('processes').find(
{ "_id" : ObjectId("5a9455d7854cd987a40b1ba4") },
{ attachments: { $elemMatch: { _id: ObjectId("5a983da6201ba5a2302fb38f") } } } )