MongoDB $group 运算符2024 年 9 月 6 日 | 阅读 4 分钟 $group 运算符在 MongoDB 中至关重要,因为它有助于执行各种数据转换。 $group 运算符按某些指定的表达式对相似数据进行分组,并为每个不同的分组对文档进行分组。 假设数据库中有 50 名学生,他们都喜欢板球。 如果我们想计算所有喜欢板球的学生,那么 $group 运算符是解决此类任务的绝佳方案。 语法要点
示例在下面的示例中,我们将使用 { "_id" : A1, "item_name" : "Blue box", "price" : 10, "qty" : 15, "date_of_bill" : "13/04/2015" } { "_id" : A2, "item_name" : "Light Red box", "price" : 15, "qty" : 20, "date_of_bill" : "05/12/2014" } { "_id" : null, "item_name" : "Green box", "price" : 10, "qty" : 30, "date_of_bill" : "17/12/2014" } { "_id" : A3, "item_name" : "White box", "price" : 8, "qty" : 25, "date_of_bill" : "07/02/2014" } { "_id" : A4, "item_name" : "Blue box", "price" : 15, "qty" : 20, "date_of_bill" : "13/04/2015" } { "_id" : A5, "item_name" : "Red box", "price" : 12, "qty" : 10, "date_of_bill" : "05/12/2014" } { "_id" : A6, "item_name" : "Black box", "price" : 10, "qty" : 30, "date_of_bill" : "22/04/2020" } { "_id" : A7, "item_name" : "Red box", "price" : 8, "qty" : 15, "date_of_bill" : "05/12/2014" } { "_id" : A8, "item_name" : "Green box", "price" : 20, "qty" : 10, "date_of_bill" : "17/12/2014" } { "_id" : A9, "item_name" : "Green box", "price" : 10, "qty" : 30, "date_of_bill" : "17/12/2014" } 示例 1:$group在此示例中,我们将按账单日期分组并显示这些字段(总价、平均数量和计算同一日期的账单数量)。 输出 { "_id" : "13/04/2015", "Total_price" : 875, "Average_qty" : 17.5, "count" : 2 } { "_id" : "05/12/2014", "Total_price" : 1575, "Average_qty" : 15, "count" : 3 } { "_id" : "17/12/2014", "Total_price" : 2800, "Average_qty" : 28.3333333, "count" : 3 } { "_id" : "07/02/2014", "Total_price" : 200, "Average_qty" : 25, "count" : 1 } { "_id" : "22/04/2020", "Total_price" : 300, "Average_qty" : 30, "count" : 1 } 这里的结果显示,账单日期字段的文档被分组,并显示了总价、平均数量以及该日期完成的账单数量。 示例 2:$group on multiple keys (在多个键上进行分组)在此示例中,我们将按账单日期和项目名称字段分组并显示这些字段(总价、平均数量和计算同一日期的账单数量)。 输出 { "_id" : { "date_of_bill" : "13/04/2015", "item" : "Blue box" } "Total_price" : 875, "Average_qty" : 17.5, "count" : 2 } { "_id" : { "date_of_bill" : "05/12/2014", "item" : "Light Red box" } "Total_price" : 300, "Average_qty" : 20, "count" : 1 } { "_id" : { "date_of_bill" : "05/12/2014", "item" : "Red box" } "Total_price" : 500, "Average_qty" : 12.5, "count" : 2 } { "_id" : { "date_of_bill" : "17/12/2014", "item" : "Green box" } "Total_price" : 2800, "Average_qty" : 28.3333333, "count" : 3 } { "_id" : { "date_of_bill" : "07/02/2014", "item" : "White box" } "Total_price" : 200, "Average_qty" : 25, "count" : 1 } { "_id" : { "date_of_bill" : "22/04/2020", "item" : "Black box" } "Total_price" : 300, "Average_qty" : 30, "count" : 1 } 示例 3:$group on multiple keys with $match (在多个键上结合 $match 进行分组)在此示例中,我们将按账单日期和项目名称字段分组并显示这些字段(总价、平均数量以及账单日期为 2014 年 12 月 5 日的文档的账单数量)。 输出 { "_id" : { "date_of_bill" : "05/12/2014", "item" : "Light Red box" } "Total_price" : 300, "Average_qty" : 20, "count" : 1 } { "_id" : { "date_of_bill" : "05/12/2014", "item" : "Red box" } "Total_price" : 500, "Average_qty" : 12.5, "count" : 2 } |
我们请求您订阅我们的新闻通讯以获取最新更新。