MongoDB Aggregation 管道操作符与表达式
$project
要求查找 order 只返回文档中 trade_no 和 all_price 字段 db.order.aggregate([ { $project:{ trade_no:1, all_price:1 } } ])
$match
用于过滤文档。用法类似于 find() 方法中的参数。 db.order.aggregate([ { $project:{ trade_no:1, all_price:1 } }, { $match:{"all_price":{$gte:90}} } ])
$group
将集合中的文档进行分组,可用于统计结果。 统计每个订单的订单数量,按照订单号分组 db.order_item.aggregate( [ { $group: {_id: "$order_id", total: {$sum: "$num"}} } ])
$sort
将集合中的文档进行排序。 db.order.aggregate([ { $project:{ trade_no:1, all_price:1 } }, { $match:{"all_price":{$gte:90}} }, { $sort:{"all_price":-1} } ])
$limit
db.order.aggregate([ { $project:{ trade_no:1, all_price:1 } }, { $match:{"all_price":{$gte:90}} }, { $sort:{"all_price":-1} }, { $limit:1 } ])
$skip
db.order.aggregate([ { $project:{ trade_no:1, all_price:1 } }, { $match:{"all_price":{$gte:90}} }, { $sort:{"all_price":-1} }, { $skip:1 } ])
$lookup 表关联
db.order.aggregate([ { $lookup: { from: "order_item", localField: "order_id", foreignField: "order_id", as: "items" } }, { $project:{ trade_no:1, all_price:1,items:1 } }, { $match:{"all_price": {$gte:90}} }, { $sort:{"all_price":-1} }, ])