mongo聚合

2019-05-24  本文已影响0人  forjie

aggregate聚合

插入参数

{
   _id: ObjectId(7df78ad8902c)
   title: 'MongoDB Overview', 
   description: 'MongoDB is no sql database',
   by_user: 'runoob.com',
   url: 'http://www.runoob.com',
   tags: ['mongodb', 'database', 'NoSQL'],
   likes: 100
},
{
   _id: ObjectId(7df78ad8902d)
   title: 'NoSQL Overview', 
   description: 'No sql database is very fast',
   by_user: 'runoob.com',
   url: 'http://www.runoob.com',
   tags: ['mongodb', 'database', 'NoSQL'],
   likes: 10
},
{
   _id: ObjectId(7df78ad8902e)
   title: 'Neo4j Overview', 
   description: 'Neo4j is no sql database',
   by_user: 'Neo4j',
   url: 'http://www.neo4j.com',
   tags: ['neo4j', 'database', 'NoSQL'],
   likes: 750
}
db.col.find([{"$group":{"_id":"$by_user","count":{"$sum":1}}}])
参数分析:
这句话的意思是按照by_user进行分组,并且计算同名by_user的个数
$group  进行分组
_id : 好像是固定参数,反正这边别动
_id后面$by_user  就是按照by_user进行分组
count 是后面算数据的别称
$sum就是同名称的总和,参数表示每次加多少

其他一些聚合的参数

db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : "$likes"}}}])
算出所有的值的总和:  likes所有数的总和
db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$avg : "$likes"}}}])
按找by_user进行分组,算出likes参数的平均数
db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$min : "$likes"}}}])
算出by_user的最小值
就是在结果添加一条数据
db.mycol.aggregate([{$group : {_id : "$by_user", url : {$addToSet : "$url"}}}])
上一篇 下一篇

猜你喜欢

热点阅读