📜  mongodb 聚合 $filter 多个条件 (1)

📅  最后修改于: 2023-12-03 15:17:42.276000             🧑  作者: Mango

Mongodb 聚合 $filter 多个条件

MongoDB的聚合工具提供了强大的聚合管道,可以让我们轻松地对文档进行聚合操作。$filter运算符是聚合管道中非常重要的一种运算符,它可以根据指定的条件过滤掉不符合要求的文档。

什么是$filter?

$filter是Mongodb的聚合管道中的运算符之一,它可以根据指定的条件过滤出符合要求的文档。它的语法如下:

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

其中,input是要过滤的数组,as是表示在过滤过程中使用的临时变量名,cond是过滤条件,可以是任何表达式。

$filter多个条件

$filter支持多个条件的过滤,可以使用$and,$or等逻辑运算符来组合多个条件,示例代码如下:

{
  $project: {
    result: {
      $filter: {
        input: "$grades",
        as: "grade",
        cond: {
          $and: [
            { $gte: [ "$$grade.score", 100 ] },
            { $lte: [ "$$grade.score", 200 ] },
            { $eq: [ "$$grade.type", "homework" ] }
          ]
        }
      }
    }
  }
}

在上面的代码中,使用了$and逻辑运算符将三个条件组合成为一个整体,只有当三个条件同时满足时才会进行过滤。

常见用法

$filter经常用于对数组类型的字段进行过滤,常见场景包括:

  • 筛选出特定的元素
  • 去掉一些元素
  • 同时满足多个条件的元素

总之,$filter是Mongodb聚合管道中非常常用的运算符之一,熟练掌握它对提高开发效率有很大的帮助。