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

MongoDB使用$gte与$lte过滤时排除指定数值的实现方法(含多值排除场景)

MongoDB使用$gte与$lte过滤时排除指定数值的实现方法(含多值排除场景)

嗨,我来帮你搞定这个问题!你已经在用$gte和$lte做范围匹配了,要同时排除特定数值其实很简单,咱们分两种场景来聊:

一、排除单个数值

如果只是要排除某一个值(比如你说的55),可以用$ne(不等于)和范围条件组合起来。因为要同时满足「数值在10-100之间」和「不等于55」这两个要求,咱们可以直接把条件写在同一个字段的查询里,MongoDB会自动按逻辑与处理:

db.collection.aggregate([
  {
    $match: {
      number: {
        $gte: 10,
        $lte: 100,
        $ne: 55
      }
    }
  }
])

当然,如果你习惯用$and明确写出逻辑关系,也可以这么写,效果是一样的:

db.collection.aggregate([
  {
    $match: {
      $and: [
        { number: { $gte: 10, $lte: 100 } },
        { number: { $ne: 55 } }
      ]
    }
  }
])

二、排除多个数值

要是你需要排除2个甚至更多数值(比如55、66、77),这时候用$nin(Not In,不在指定数组内)就最合适了。用法和上面类似,把要排除的数值放进数组里就行:

db.collection.aggregate([
  {
    $match: {
      number: {
        $gte: 10,
        $lte: 100,
        $nin: [55, 66, 77]
      }
    }
  }
])

同样,用$and的写法也支持:

db.collection.aggregate([
  {
    $match: {
      $and: [
        { number: { $gte: 10, $lte: 100 } },
        { number: { $nin: [55, 66, 77] } }
      ]
    }
  }
])

不管你要排除多少个值,只要把它们都加到$nin的数组里就好,非常灵活。

备注:内容来源于stack exchange,提问作者Zesshi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 11:54:53