当前位置:首页 > 行业动态 > 正文

MongoDB中的else if语句详解

在MongoDB中,我们可以使用$cond$ifNull等操作符来实现类似于else if语句的功能,下面是一些常用的操作符及其用法:

1、$cond操作符

$cond操作符用于根据给定的条件返回不同的值,它接受三个参数:条件表达式、满足条件时返回的值和不满足条件时返回的值。

语法:

{ $cond: { if: <expression>, then: <true_case>, else: <false_case> } }

示例:

假设我们有一个名为students的集合,其中包含以下文档:

{ "_id": 1, "name": "张三", "score": 85 }
{ "_id": 2, "name": "李四", "score": 90 }
{ "_id": 3, "name": "王五", "score": 78 }

我们想要根据学生的分数给他们打上等级标签,可以使用$cond操作符实现:

db.students.aggregate([
  {
    $addFields: {
      grade: {
        $cond: [
          { $gte: ["$score", 90] },
          "A",
          {
            $cond: [
              { $gte: ["$score", 80] },
              "B",
              {
                $cond: [
                  { $gte: ["$score", 70] },
                  "C",
                  "D"
                ]
              }
            ]
          }
        ]
      }
    }
  }
])

2、$ifNull操作符

$ifNull操作符用于检查一个值是否为null,如果为null则返回指定的默认值,否则返回原始值。

语法:

{ $ifNull: [ <expression>, <default_value> ] }

示例:

假设我们有一个名为employees的集合,其中包含以下文档:

{ "_id": 1, "name": "张三", "department": null }
{ "_id": 2, "name": "李四", "department": "技术部" }
{ "_id": 3, "name": "王五", "department": "市场部" }

我们想要查询员工的姓名和部门,如果部门为null,则显示"未知",可以使用$ifNull操作符实现:

db.employees.aggregate([
  {
    $addFields: {
      department: { $ifNull: ["$department", "未知"] }
    }
  }
])

通过这些操作符,我们可以在MongoDB中实现类似于else if语句的功能。

0