MongoDB 的高级查询 aggregate 聚合管道
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}
},
])

浙公网安备 33010602011771号