match 、sort、skip、$lookup 表关联
$project
过滤表字段,只显示表中的下面三个字段
db.order.aggregate([
{
$project: { order_id: 1, trade_no: 1, all_price: 1 }
}
])
$match
匹配字段符合规则的
db.order.aggregate([
{
$project: { order_id: 1, trade_no: 1, all_price: 1 }
},
{
$match: { "all_price": { $gte: 90 } }
}
])
$group
以某个字段进行分组 可以统计字段之和
db.order_item.aggregate(
[
{
$group: { _id: "$order_id", total: { $sum: "$num" } }
}
]
)
$sort
以某个字段排序 -1降序 1升序
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"
}
}
])