MongoDB嵌套数组查询:匹配secondArray最后一个元素的status值
MongoDB 查询:匹配数组最后一个元素的指定状态
问题分析
你当前的查询语句仅能筛选出secondArray中任意元素的status匹配目标数组的文档,但无法限定必须是secondArray的最后一个元素满足条件,因此不符合需求。
正确查询语句
要实现筛选firstArray中至少存在一个元素,其secondArray最后一个对象的status在指定数组(如["foo3"])中的需求,可结合$elemMatch与表达式操作符完成,无需聚合:
db.collection.find({ "f1.firstArray": { $elemMatch: { $expr: { $in: [ { $getField: ["status", { $arrayElemAt: ["$secondArray", -1] }] }, ["foo3"] // 替换为你的目标状态数组 ] }, otherField: "bar" // 保留原查询中的其他条件 } } })
代码说明
$arrayElemAt: ["$secondArray", -1]:获取secondArray的最后一个元素(索引-1代表数组末尾)$getField: ["status", ...]:从取到的最后一个元素中提取status字段值$in:判断该status值是否在目标数组内$elemMatch:确保firstArray中至少有一个元素满足上述所有条件
内容的提问来源于stack exchange,提问作者snakom23
相关产品推荐
相关产品推荐

