如何根据嵌套数组最后一个元素的值获取完整MongoDB文档
按嵌套数组最后一个元素的字段过滤MongoDB完整文档
要找出存在至少一个matches元素,且该元素的ids数组最后一项的innerName等于指定值的完整文档,可以用MongoDB的$expr结合数组操作符实现,直接返回符合条件的整个文档,不会只提取特定字段。
实现查询语句
针对你的文档结构,查询innerName = '1234'的语句如下:
db.collection.find({ $expr: { $gt: [ { $size: { $filter: { input: "$matches", cond: { $eq: [ { $last: "$$this.ids.innerName" }, "1234" ] } } } }, 0 ] } })
逻辑说明
- 用
$filter遍历每个文档里的matches数组,逐个检查每个matches元素的ids数组 $last: "$$this.ids.innerName"专门取当前matches元素中ids数组最后一个对象的innerName值- 只要有一个
matches元素满足innerName等于'1234',$size统计出的筛选结果数量就会大于0,该文档就会被返回
测试验证
用你给出的测试数据执行上述查询,会精准返回_id:1的完整文档,和预期结果完全一致。
内容的提问来源于stack exchange,提问作者lightPT
相关产品推荐
相关产品推荐

