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

如何根据嵌套数组最后一个元素的值获取完整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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 07:45:48