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

MongoDB如何查询数组包含连续COMPLETED状态元素的文档

MongoDB 查询数组含相邻COMPLETED状态的文档

以下是直接可用的查询语句,无需额外聚合阶段即可匹配符合要求的文档:

db.collection.find({
  $expr: {
    $gt: [
      {
        $size: {
          $filter: {
            // 生成所有相邻元素对的首个元素下标
            input: { $range: [0, { $subtract: [{ $size: "$activities" }, 1] }] },
            cond: {
              $and: [
                // 检查当前下标对应状态为COMPLETED
                { $eq: [{ $arrayElemAt: ["$activities.status", "$$this"] }, "COMPLETED"] },
                // 检查下一个下标对应状态也为COMPLETED
                { $eq: [{ $arrayElemAt: ["$activities.status", { $add: ["$$this", 1] }] }, "COMPLETED"] }
              ]
            }
          }
        }
      },
      // 只要存在至少一对符合要求的相邻元素就匹配
      0
    ]
  }
})

边界情况适配

如果activities数组长度小于2,查询会自动跳过这类文档,不会误判。针对你给出的示例数据,该查询仅返回_id为some-long-id-1的文档,完全符合需求。


内容的提问来源于stack exchange,提问作者Rifat Bin Reza

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 11:15:03