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

MongoDB聚合操作:如何返回包含存在第二个元素的数组的所有文档

MongoDB聚合筛选存在第二个元素的数组文档

要筛选出数组字段存在第二个元素的文档,得注意MongoDB的数组索引是从0开始的——第二个元素对应的索引是1,不是你代码里写的2。下面给两种可行的聚合实现方式:

方法一:通过数组长度判断

直接判断数组长度大于等于2,这样就能确保数组至少包含两个元素(即存在第二个元素):

db.collection.aggregate([
  {
    $match: {
      $expr: {
        $gte: [{ $size: "$arr" }, 2]
      }
    }
  }
])

方法二:通过索引元素是否存在判断

利用$arrayElemAt获取索引1的元素,若数组长度不足2,该方法会返回null,通过判断元素不为null来筛选目标文档:

db.collection.aggregate([
  {
    $match: {
      $expr: {
        $ne: [{ $arrayElemAt: ["$arr", 1] }, null]
      }
    }
  }
])

你之前的代码里用了$arrayElemAt: ["$arr",2],这其实是在取数组的第三个元素(索引从0计数),如果要匹配第二个元素,记得把索引值改成1。

内容的提问来源于stack exchange,提问作者Amitabh Anand

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 07:42:47