在MongoDB中使用聚合管道操作符主要有以下几种方式:
- $match – 用于过滤数据,只输出符合条件的文档。
- 等价于find()查询操作。
{ $match: { status: "A" } }
- $group – 将集合中的文档分组,可用于统计结果。
- 形如:{ $group: { _id: , : { : }, … } }
{
$group: {
_id: "$gender",
total: { $sum: 1 }
}
}
- $sort – 将文档排序后输出。
- 等价于sort()命令。
{ $sort: { age: -1 } }
- $skip – 跳过指定数量的文档,并返回余下的文档。
- 等价于skip()命令。
{ $skip: 5 }
- $limit – 输出指定数量的文档。
- 等价于limit()命令。
{ $limit: 10 }
- $lookup – 对文档执行左外连接,查询然后将结果合并。
- 可用于在aggregation pipeline内实现join
{
$lookup: {
from: "inventory",
localField: "item",
foreignField: "sku",
as: "inventory_docs"
}
}
- $unwind – 将文档中的数组类型字段拆分成多条文档。
- 每条文档都包含数组中的一个值。
{ $unwind: "$tags" }
- 等等其他类型 – $project, $addFields, $replaceRoot, $avg, $max, $min, $sum, $size, etc.