MongoDB - 聚合

Posted 爱穿新衣服的姑凉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB - 聚合相关的知识,希望对你有一定的参考价值。

MongoDB聚合方法:aggregate()
    语法:db.collection_name.aggregate(AGGREGATE_OPERATION)
    
管道:MongoDB的聚合管道将文档在一个管道处理完毕的结果传递给下一个管道处理,管道操作是可以重复的
常用管道:
  • $project:
    • 控制返回文档的结构,从文档中选择想要的域,可以重命名,增加或删除域
    • 也可以通过管道表达式进行一些负责的操作,例如数学计算,日期操作,逻辑操作等
    • _id字段默认包含在输出文档中,要从输出文档中排除_id字段,则必须指定$project的 _id:0 
      # 事例数据
      {
          "_id": ObjectId("5e5e05ef88f52a1c16bbff0f"),
          "url": "https://www.baidu.com/",
          "web_name": "百度",
          "click_num": 605,
          "year": 2019
      }
       1 # 输出文档中除了web_name和click_num外,还包含默认的 _id 域
       2 db.test_study.aggregate([
       3     {
       4         $project: {
       5             web_name: "$web_name",
       6             click_num: "$click_num"
       7         }
       8     }
       9 ])
      10 
      11 
      12 # 设置 _id:0 输出文档中只包括 web_name 和 click_num,不包含 _id 域
      13 db.test_study.aggregate([
      14     {
      15         $project: {
      16          _id:0,
      17             web_name: "$web_name",
      18             click_num: "$click_num"
      19         }
      20     }
      21 ])

       

    • 输出嵌套字段中的部分字段
      # 事例数据
      { "_id":
      1, "title": "789", "author": { "last": "Li", "first": "Lucy", "country": "China" }, "copies": 5, "lastModified": "2019-07-28" }

      需求:输出 title,author.country

      db.test.aggregate([{
          $project: {
          _id:0,
              title: "$title",
              author_country: "$author.country"
          }
      }])

       

    • 排除_id、author.country、copies 其他字段均输出(事例数据如上)
      db.test.aggregate([{
          $project: {
              "_id":0,
              "copies": 0,
              "author.country": 0
          }
      }])

      注意:
      "copies" 要加双引号

       

以上是关于MongoDB - 聚合的主要内容,如果未能解决你的问题,请参考以下文章

python3操作MongoDB的crud以及聚合案例,代码可直接运行(python经典编程案例)

Spring Mongo 聚合查询以从 MongoDB 获取不同的国家名称和国家代码

mongodb聚合(转)

python3操作MongoDB的crud以及聚合案例,代码可直接运行(python经典编程案例)

MongoDB 更新和聚合问题:跳过聚合

mongodb 聚合 - 具有最后一个日期的组