zoukankan      html  css  js  c++  java
  • mongodb 系列 ~ 聚合语法

    1  基本语法    
        db.collection.aggregate( [ { }, … ] )
    2 内置函数~$match
        作用:条件匹配过滤
        案例: db.articles.aggregate([{$match:{author:"dave"}}]) 过滤 author:"dave"的文档
    3 内置函数~$project
       作用:用来重构返回值 还可以给返回结果增加字段
       案例:db.books.aggregate([{$project:{title:1,author:1}}])
    4 内置函数~$unwind
       作用 将数组成员分别拆成单挑记录
       标准语法
        { $unwind: { path: <field path>, 数组名 includeArrayIndex: <string>, 数据下标名 preserveNullAndEmptyArrays: <boolean> 对于缺失/null情况 默认为false }
        案例
        1 { "_id" : 1, "item" : "ABC1", sizes: [ "S", "M", "L"] }
        2 db.inventory.aggregate( [ { $unwind : "$sizes" } ] )
        3 { "_id" : 1, "item" : "ABC1", "sizes" : "S" }->可以看到拆成三条 { "_id" : 1, "item" : "ABC1", "sizes" : "M" } { "_id" : 1, "item" : "ABC1", "sizes" : "L" }
      5 内置函数~$lookup
        作用 连表查询
       标准语法
       {
       $lookup:
       {
        from: 目标表,
        localField: 本地表字段
        foreignField: 连表字段
        as: 自定义输出字段名
        }
       }
    6 内置函数~count
       作用 计算上述结果然后赋予字段
       案例:
      db.scores.aggregate(
      [
      {
      $match: {
      score: {
      $gt: 80
      }
      }
     },
    {
    $count: "passing_scores"
    }
    ]
    )
    过滤大于80分的记录总数 数量给”passing_scores”这个字段。
     
    7 pipeline
    作用:对mongodb的collection进行运算,筛选,截取,排序操作
    pipeline = [
    {$project:?},
    {$match:?},
    {$group:?},
    {$sort :?},
    {$limit:?},
    {$skip :?},
    {$unwind:?},
    {$redact:?},
    {$sample:?},
    {$out:?},
    ]
    db.colliction.aggregate(pipeline)
     
     

  • 相关阅读:
    【Yii2.0】1.5 Yii2.0新特性记录
    【PHP7.0】PHP7.0 小知识点摘录
    【PHP7.0】PHP7.0学习笔记目录
    【Yii2.0】1.4 Apache2.4.23基于主机名的虚拟主机配置
    【Yii2.0】2.2 Yii2.0 Basic代码中路由链接被转义的处理
    【Yii2.0】1.3 MySQL5.7.15修改root密码
    [Leetcode 106] 130 Surrounded Regions
    [Leetcode 105] 90 Subsets II
    [Leetcode 104] 131 Palindrome Partitioning
    [Leetcode 103] 37 Sudoku Solver
  • 原文地址:https://www.cnblogs.com/danhuangpai/p/15133655.html
Copyright © 2011-2022 走看看