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

如何编写MongoDB查询筛选嵌套数组不含指定ID元素的文档

解决MongoDB筛选readIds数组不含指定id的文档问题

你的查询逻辑有误,原语句会尝试匹配readIds数组中存在id不等于目标值的元素的文档,但这无法覆盖readIds为空数组的情况,也不符合你要找“完全没有指定id”的需求。

正确的查询语句应该是:

.find({
  readIds: {
    $not: {
      $elemMatch: {
        id: '62c56b2cffe059fdfdd19230'
      }
    }
  }
})

逻辑说明

这个查询的核心是用$not否定$elemMatch的匹配结果:

  • $elemMatch: { id: 'xxx' }会匹配那些readIds数组中存在指定id元素的文档
  • 加上$not后,就会筛选出所有不满足上述条件的文档,包括:
    1. readIds为空数组的文档
    2. readIds数组中所有元素的id都不等于指定值的文档

这样就能精准得到你需要的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 14:36:25