$lookup
$lookup函数可以用于在同一数据库中的不同集合之间进行关联查询,并将查询结果合并到一个文档中,例如:
代码语言:javascript复制db.orders.aggregate([
{
$lookup:
{
from: "users",
localField: "user_id",
foreignField: "_id",
as: "user_info"
}
}
])
这个命令将orders集合中的user_id字段与users集合中的_id字段进行关联查询,并将查询结果合并到orders文档中的user_info字段中。
$group
$group函数可以用于将文档按照指定字段进行分组,并对分组后的数据进行聚合操作,例如:
代码语言:javascript复制db.orders.aggregate([
{
$group:
{
_id: { day: { $dayOfMonth: "$created_at" }, month: { $month: "$created_at" } },
total_sales: { $sum: "$amount" }
}
}
])
这个命令将orders集合中的created_at字段按照日期进行分组,并计算每个分组的amount字段之和。
$project
$project函数可以用于在聚合管道中选择需要输出的字段,并对输出结果进行处理,例如:
代码语言:javascript复制db.orders.aggregate([
{
$project:
{
_id: 0,
order_id: "$_id",
user_name: "$user_info.name",
total_sales: 1
}
}
])
这个命令将orders集合中的_id字段输出为order_id字段,并将user_info文档中的name字段输出为user_name字段。