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)