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

如何将文档数组属性作为参数列表传入$setEquals等MongoDB聚合运算符?

最优实现方案

推荐使用 $map + $allElementsTrue 的组合实现,代码更简洁易读,性能和reduce方案一致:

{
  $project: {
    allSubarraysEqual: {
      $allElementsTrue: {
        $map: {
          input: "$myLists",
          in: {
            $setEquals: [ "$$this", { $arrayElemAt: [ "$myLists", 0 ] } ]
          }
        }
      }
    }
  }
}

方案说明

  1. 先取myLists的第一个子数组作为比对基准
  2. 用$map遍历所有子数组,逐一和基准比对是否元素集合相等,得到布尔值数组
  3. 用$allElementsTrue判断布尔值数组是否全为true,是则说明所有子数组元素完全相同
  4. 该方案兼容所有支持聚合运算的MongoDB版本,如果是MongoDB 4.4+版本,可以把{ $arrayElemAt: [ "$myLists", 0 ] }替换为{ $first: "$myLists" },写法更直观

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 04:39:03