时间:2021-07-01 10:21:17 帮助过:2人阅读
注意,这里的第二个分组用的是第一个分组的_id,所以加上了$_id,这表示使用上面group的数据源来作为第二个分组的键。
而如果只是单个分组,就很容易实现了,也看一下代码
//单分组 db.M_User_Footprints.aggregate([ { $group: { _id: "$UserInfoID", result: { $sum: 1 } } } ])
从上面两段代码我们可以看到,分组键必须用_id,分组的结果名称可以自己定义,{$sum:1}每次自加1。
下面使用map...reduce也可以实现分组的功能
db.runCommand({ mapreduce: "M_User_Footprints", map: function Map() { emit( { "UserInfoID": this.UserInfoID, "ObjID": this.PlayVideo.ObjID } , { count: 1 } ); }, reduce: function Reduce(key, values) { total = 0;//定义一个变量total , values是一个数组 for (var i in values) { total += values[i].count } return { "count": total }; }, finalize: function Finalize(key, reduced) { return reduced; }, out: { inline: 1 } });
回到目录
MongoDB学习笔记~管道中的分组实现group+distinct
标签: