MongoDB查询:匹配数组最后一个元素指定属性值且保留原结构
MongoDB 查询:匹配数组最后一个元素的指定属性且保留原文档结构
我明白你的需求啦——要找出my_list数组最后一个元素的b属性符合特定值的文档,同时还得保留原文档的完整结构,不想用$project来修改返回结果对吧?
其实不用在投影阶段做处理,直接在查询条件里用聚合表达式就能搞定,既过滤出符合条件的文档,又能完整返回原结构。这里给你一个具体的查询示例:
db.collection.find({ $expr: { $eq: [ { $arrayElemAt: ["$my_list.b", -1] }, 31 // 把这里替换成你需要匹配的特定值 ] } })
来拆解一下这个查询的逻辑:
$expr关键字让我们可以在查询条件中使用聚合管道里的表达式,这是实现这个需求的关键{ $arrayElemAt: ["$my_list.b", -1] }会先提取my_list数组中每个元素的b属性,生成一个新的数值数组,然后用-1作为索引取出这个数组的最后一个元素$eq用来对比这个最后一个b值和你指定的目标值,只有相等的文档才会被筛选出来
这样查询返回的就是完全保留原有结构的文档,完全符合你的要求~
内容的提问来源于stack exchange,提问作者Neabfi
相关产品推荐
相关产品推荐

