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)
 
 

原文地址:https://www.cnblogs.com/danhuangpai/p/15133655.html