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

MongoDB嵌套数组$all操作符失效问题及查询需求咨询

MongoDB嵌套数组的两种匹配查询方案

需求1:匹配任意嵌套数组元素包含指定所有值的文档

需要查询wordArrays数组中至少有一个子数组同时包含"Hello"和"World"的文档(示例文档符合此条件)。

Find阶段查询语句

db.collection.find({
  wordArrays: { $elemMatch: { $all: ["Hello", "World"] } }
})

说明

  • $elemMatch用于定位嵌套数组中满足条件的子元素
  • $all确保目标子数组包含指定的所有值
  • 此查询会匹配示例文档,因为wordArrays的第一个子数组同时包含"Hello"和"World"

需求2:匹配所有嵌套数组元素都包含指定所有值的文档

需要查询wordArrays数组中每一个子数组都同时包含"Hello"和"World"的文档(示例文档不符合此条件)。

Find阶段查询语句

db.collection.find({
  wordArrays: {
    $not: {
      $elemMatch: {
        $or: [
          { $nin: ["Hello"] },
          { $nin: ["World"] }
        ]
      }
    }
  }
})

说明

  • 通过反向逻辑验证:排除存在任何一个子数组缺少"Hello"或"World"的文档
  • $not配合$elemMatch,确保所有子数组都符合要求
  • 示例文档中第二个子数组["The", "Sun", "Shines"]不包含指定值,因此不会被此查询匹配

示例数据

[
  {
    "words": [ "Hello", "World", "!"],
    "wordArrays": [
      ["Hello", "World", "!"],
      ["The", "Sun", "Shines"]
    ]
  }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 22:20:02