MongoDB – 获取集合中每个组的max属性的文档
我的数据如下所示:
session, age, firstName, lastName 1, 28, John, Doe 1, 21, Donna, Keren 2, 32, Jenna, Haze 2, 52, Tommy, Lee .. ..
我想要得到每个会话中最大(按年龄)的所有行。 所以对于上面的input,我的输出如下所示:
sessionid, age, firstName, lastName 1, 28, John, Doe 2, 52, Tommy, Lee
因为约翰在会议= 1组中的年龄最大,而汤米在会议= 2组中的年龄最大。
我需要将结果导出到一个文件(csv),它可能包含大量的logging。
我怎样才能做到这一点?
您可以尝试使用max属性的以下聚合查询: http : //docs.mongodb.org/manual/reference/operator/aggregation/max/
db.collection.aggregate([ $group: { "_id": "$session", "age": { $max: "$age" } }, { $out : "max_age" } ])
结果应该输出到新的集合max_age,然后你可以将其转储到一个csv。
注意:它只会给会议和最大年龄,不会返回其他字段。
MongoDB聚合提供了$max
操作符,但在您的情况下,您希望“整个”logging保持原样。 所以在这里做适当的事情是$sort
,然后使用$group
语句中的$first
操作符:
db.collection.aggregate([ { "$sort": { "session": 1, "age": -1 } }, { "$group": { "_id": "$session", "age": { "$first": "$age" }, "firstName": { "$first" "$firstName" }, "lastName": { "$first": "$lastName" } }} ])
因此,“sorting”得到正确的顺序,“分组”select“分组”键中存在这些字段的第一次出现。
这里大多是$first
,因为$sort
是按相反的顺序完成的。 也可以使用$last
作为升序。