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

如何在Mongoose中查找数组字段不包含指定值的文档?

在Mongoose中查找数组不包含特定值的文档

其实MongoDB(包括Mongoose)里并没有$ncontains这种操作符,但我们可以用官方提供的现有操作符轻松实现你想要的效果,主要有两种常用方案:

方案一:直接使用$nin操作符

$nin(Not In)就是专门用来匹配字段值不在指定集合中的文档,完美对应你要的“数组不包含特定值x”的需求。针对你的list: {type:[String]}字段,查询代码如下:

M.findOne({ list: { $nin: [x] } })

这里只需要把要排除的特定值x放进一个数组里传给$nin,就能精准找到所有list数组中不包含x的文档。

方案二:用$not + $in组合实现取反

如果你更习惯用“反向思维”来写查询,也可以用$not配合$in来达到同样效果:

M.findOne({ list: { $not: { $in: [x] } } })

$in是用来匹配包含指定值的文档,加上$not就直接取反,得到不包含该值的文档集合。

额外补充:处理字段不存在的情况

如果你的list字段可能存在未定义或者为null的文档,上面两种方案会默认把这些文档也纳入结果。要是你只想查询**确实存在list数组且不包含x**的文档,可以额外加上$exists条件:

M.findOne({ 
  list: { 
    $exists: true,
    $nin: [x] 
  } 
})

内容的提问来源于stack exchange,提问作者Chong Lip Phang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:05:01