📜  mongodb 按几个字段分组 - Javascript (1)

📅  最后修改于: 2023-12-03 14:44:22.332000             🧑  作者: Mango

MongoDB 按多个字段分组

MongoDB是一个非关系型数据库,可以进行视图的聚合操作。其中,按多个字段分组是其中一个聚合操作。可以使用aggregate管道来执行数据的分组聚合操作。

聚合管道

MongoDB聚合管道是由多个聚合操作构成的数据处理管道。这些聚合操作可以用于对MongoDB中的数据进行过滤、排序、分组、计算、投影等多方面的处理。

例如,通过以下代码片段可以得到一个包含两个阶段的聚合管道:

db.collection.aggregate([
  { $match: { status: "A" } },
  { $group: { _id: "$type", totalAmount: { $sum: "$amount" } } }
])

这里,在第一个阶段中,通过$match操作筛选出status字段为“A”的文档;在第二个阶段中,使用$group操作以type字段作为分组依据,计算每个组的amount字段总和,生成一个包含type和totalAmount两个字段的文档。

多字段分组

MongoDB可以支持按照多个字段进行分组聚合操作,只需要在$group操作中指定多个字段即可。例如:

db.collection.aggregate([
  { $group: { _id: { type: "$type", status: "$status" }, totalAmount: { $sum: "$amount" } } }
])

这里的$group操作中,指定了_type_和_status_两个字段作为分组依据,将数据按照这两个字段的取值组合进行分组聚合,计算每个组内的_amount_字段的总和。最终的聚合结果包含字段_type_和_status_,以及总和字段_totalAmount_。

总结

MongoDB的聚合管道可以支持多个聚合操作构成的数据处理管道,并且可以支持按照多个字段进行分组聚合操作。通过这些操作,可以灵活地对MongoDB中的数据进行多方面的处理,满足不同的数据处理需求。