• 聚集
    • aggregate()

    聚集

    聚集框架提供了对集合中的原始数据记录进行统计计算的能力。通过使用聚集框架,用户能够直接从集合中提取数据记录并获取所需的统计结果。聚集框架提供的操作接口类似于集合中的查询操作,不同的是聚集框架还提供了一系列函数及操作对查询结果进行处理。

    aggregate()

    以下是聚集操作举例:

    1. > db.foo.bar.aggregate( { $match: { age: { $gt: 30 } } }, { $group: { _id: "$city", income: { "$avg": "$income" }, city: { "$first": "$city" } } } )

    上例聚集操作包含了两个子操作:

    • "$match"子操作将集合中年龄大于30的数据记录筛选出来;
    • "$group"子操作从筛选出的数据记录按照城市进行分组,计算出每个城市的人均收入。通过上例聚集操作将得到各城市30岁以上的人均收入。

    假设原始数据为:

    1. { name: "张三", income: 10000, age: 31, city: "北京" }
    2. { name: "李四", income: 25000, age: 28, city: "上海" }
    3. { name: "王五", income: 15000, age: 32, city: "上海" }
    4. { name: "赵六", income: 30000, age: 40, city: "北京" }

    经过子操作$match后,数据为:

    1. { name: "张三", income: 10000, age: 31, city: "北京" }
    2. { name: "王五", income: 15000, age: 32, city: "上海" }
    3. { name: "赵六", income: 30000, age: 40, city: "北京" }

    经过子操作$group后,最终结果为:

    1. { income: 15000, city: "上海" }
    2. { income: 20000, city: "北京" }