聚集
聚集框架提供了对集合中的原始数据记录进行统计计算的能力。通过使用聚集框架,用户能够直接从集合中提取数据记录并获取所需的统计结果。聚集框架提供的操作接口类似于集合中的查询操作,不同的是聚集框架还提供了一系列函数及操作对查询结果进行处理。
aggregate()
以下是聚集操作举例:
- > db.foo.bar.aggregate( { $match: { age: { $gt: 30 } } }, { $group: { _id: "$city", income: { "$avg": "$income" }, city: { "$first": "$city" } } } )
上例聚集操作包含了两个子操作:
假设原始数据为:
- { name: "张三", income: 10000, age: 31, city: "北京" }
- { name: "李四", income: 25000, age: 28, city: "上海" }
- { name: "王五", income: 15000, age: 32, city: "上海" }
- { name: "赵六", income: 30000, age: 40, city: "北京" }
经过子操作$match后,数据为:
- { name: "张三", income: 10000, age: 31, city: "北京" }
- { name: "王五", income: 15000, age: 32, city: "上海" }
- { name: "赵六", income: 30000, age: 40, city: "北京" }
经过子操作$group后,最终结果为:
- { income: 15000, city: "上海" }
- { income: 20000, city: "北京" }