MongoDB 数据操作(八)聚合框架(2)$project
in SQL with 0 comment, Views is 19

MongoDB 数据操作(八)聚合框架(2)$project

in SQL with 0 comment, Views is 19

上一篇:《MongoDB 数据操作(八)聚合框架(1)$group》

可以利用 $project 来控制数据列的显示规则,那么可以执行的规则如下:

只显示 namejob 列,不显示 _id

> db.emps.aggregate([{"$project":
      {
          "_id": 0,
          "name": 1
      }
  }]).pretty();

1.png

默认未进行设置的列均不会被显示,实际上这就属于数据库的投影机制

在进行数据投影的过程中也支持四则运算:加法$add、减法$subtract、乘法$multiply、除法$divide、求模$mod

起别名

> db.emps.aggregate([{"$project":
      {
          "_id": 0,
          "name": 1,
          "职位": "$job",
          "salary": 1
      }
  }]).pretty();

2.png

观察四则运算

> db.emps.aggregate([{"$project":
      {
          "_id": 0,
          "name": 1,
          "job": 1,
          "salary": {
              "年薪": {"$multiply": ["$salary", 12]}
          }
      }
  }]).pretty();

3.png

除了四则运算之外也支持如下的各种运算符:

找出所有工资大于等于 2000 的雇员姓名、年龄、工资

> db.emps.aggregate([{"$project":
      {
          "_id": 0,
          "name": 1,
          "job": "$job",
          "salary": {
              "工资": "$salary",
              "是否不小于2000": {"$gte": ["$salary", 2000]}
          }
      }
  }]).pretty();

4.png

查询职位是 manager 的信息

> db.emps.aggregate([{"$project":
      {
          "_id": 0,
          "name": 1,
          "job": {
              "职位": "$job",
              "是否为manager": {"$strcasecmp": ["$job", "manager"]}
          }
      }
  }]).pretty();

5.png

使用字符串截取

> db.emps.aggregate([{"$project":
      {
          "_id": 0,
          "name": 1,
          "job": {
              "职位": "$job",
              "截取前三位": {"$substr": ["$job", 0, 3]}
          }
      }
  }]).pretty();

6.png

利用 $project 实现的投影操作功能相当强大,所有可以出现的操作几乎都能够使用

下一篇:《MongoDB 数据操作(八)聚合框架(3)$match》

Responses
选择表情