MongoDB聚合运算符:$filter

本文详细介绍了MongoDB中的$filter聚合运算符,如何利用limit控制返回元素数量,以及通过数值比较、字符串匹配和正则表达式进行条件筛选。实例展示了如何在销售数据中应用这些技术以获取特定条件下的项目列表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

$filter聚合运算符按照指定的条件返回数组的一个子集,返回数组的所有元素都要满足指定的条件,并按照原顺序返回。

语法

{
   
    $filter:
      {
   
         input: <array>,
         as: <string>,
         cond: <expression>,
         limit: <number expression>
      }
}

参数字段说明:

字段 说明
input 可被解析为数组的表达式
as 可选,代表输入数组元素的变量名称,如果不指定,默认的名称为this,变量可以在条件中引用
cond 逻辑表达式,用来判断数组元素是否符合条件,可以引用as指定的名称来访问数组的每个元素
limit 可选,数值表达式用来限制返回元素的数量,其值必须必须大于等于1,匹配的数组元素按照原有的顺序返回。如果limit的值大于匹配的数组元素数量或为null,将返回全部符合条件的元素

使用

举例说明几种情况

不指定limit

{
   
  $filter: {
   
     input: [ 1, "a", 2, null, 3.1, NumberLong(4), "5" ],
     as: "num",
     cond: {
    $isNumber: "$$num" }
  }
}

结果:

[ 1, 2, 3.1, NumberLong(4) ]

指定limit为常量

{
   
  $filter: {
   
     input: [ 1, "a", 2, null, 3.1, NumberLong(4), "5" ],
     as: "num",
     cond: {
    $isNumber: "$$num" },
     limit: 2
  }
}

结果:

[ 1, 2 ]

指定limit为表达式

{
   
  $filter: {
   
     input: [ 1, "a", 2, null, 3.1, NumberLong(4), "5" ],
     as: "num",
     cond: {
    $isNumber: "$$num" },
     limit: {
    $add: [ 0, 1 ] }
  }
}

结果:

[1]

举例

使用下面的脚本创建sales集合:

db.sales.insertMany
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

原子星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值