关于mongodb的aggregate

  最近学习nodejs和mongo,当学到appregate的时候感到很困惑,通过一小段时间的学习,大概总结下所学的东西。css

 首先,先创建数据表html

 use userinfo node

 db //userinfoapp

 db.createCollection('user');学习

 首先要插入一些数据: htm

{
"_id" : ObjectId("588031590d6c56fe957a1d55"),
"name" : "lpc",
"title" : "html",
"price" : 300
}
{
"_id" : ObjectId("588031630d6c56fe957a1d56"),
"name" : "lpc",
"title" : "css",
"price" : 200
}
{
"_id" : ObjectId("5880316d0d6c56fe957a1d57"),
"name" : "yy",
"title" : "css",
"price" : 100
}it

接下来查询咱们的数据大概看一下:io

db.user.find().pretty() //看到输出结果ejs

 db.user.aggregate({$project:{username:'$name',userprice:'$price',usertitle:'$title'}},{$group:{_id:'$title',sum:{$sum:1},avg:{$avg:"$userprice"}}}).pretty()方法

大概解释下这句话的意思:

aggregate的意思是聚合。咱们能够经过这个方法来计算数据的和 最大最小值 平均值等

$project:能够对结果集中的键重命名,控制键是否显示(只要不写进去就不会 显示)

$project:{username:'$name',userprice:'$price',usertitle:'$title'}:这句话的意思就是把数据表中的name字段的名称改变成‘username’

当只输入¥project这一命令时,获得的结果以下:

{ "_id" : ObjectId("588031590d6c56fe957a1d55"), "username" : "lpc", "usertitle" : "html", "userprice" : 300 }
{ "_id" : ObjectId("588031630d6c56fe957a1d56"), "username" : "lpc", "usertitle" : "css", "userprice" : 200 }
{ "_id" : ObjectId("5880316d0d6c56fe957a1d57"), "username" : "yy", "usertitle" : "css", "userprice" : 100 }

$group:分组,聚合,求和,平均数

_id(第一个感受必须填_id,要否则会报错)

sum:{$sum:1} 根据_id求和,就是计算了title字段内容相同的和

avg:{$avg:"$userprice"} 根据userprice求平均值

输出的结果为:

{ "_id" : "css", "sum" : 2, "avg" : 150 }{ "_id" : "html", "sum" : 1, "avg" : 300 }