MongoDB嵌套聚合函数使用

2023-04-14 15:58:47 浏览数 (1)

$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字段。

0 人点赞