You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 04:26:05