$unwind
$unwind函数用于将数组类型的数据展开,将数组中的每个元素作为单独的文档进行处理,例如:
代码语言:javascript复制db.orders.aggregate([
{ $unwind: "$items" },
{ $group: { _id: "$items.name", total: { $sum: "$items.price" } } }
])
这个命令将展开orders集合中的items数组,将每个items元素作为单独的文档进行处理,然后按照items.name字段进行分组,并计算每个分组的items.price字段之和。
$size
$size函数用于返回数组类型数据中的元素个数,例如:
代码语言:javascript复制db.orders.aggregate([
{ $project: { items_count: { $size: "$items" } } }
])
这个命令将计算orders集合中items数组的元素个数,并将结果保存到items_count字段中。
$slice
$slice函数用于返回数组类型数据中的指定范围的元素,例如:
代码语言:javascript复制db.orders.aggregate([
{ $project: { first_two_items: { $slice: ["$items", 2] } } }
])
这个命令将返回orders集合中items数组中的前两个元素,并将结果保存到first_two_items字段中。
$filter
$filter函数用于过滤数组类型数据中符合条件的元素,例如:
代码语言:javascript复制db.orders.aggregate([
{
$project: {
discount_items: {
$filter: {
input: "$items",
as: "item",
cond: { $gt: [ "$$item.price", 100 ] }
}
}
}
}
])
这个命令将过滤orders集合中items数组中价格大于100的元素,并将结果保存到discount_items字段中。