首页 > 数据库技术 > 详细

关于mongodb的aggregate

时间:2017-01-19 16:53:18      阅读:209      评论:0      收藏:0      [点我收藏+]

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

 首先,先建立数据表

 use userinfo 

 db //userinfo

 db.createCollection(‘user‘);

 首先要插入一些数据: 

{
"_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
}

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

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

 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 }

关于mongodb的aggregate

原文:http://www.cnblogs.com/lpc-js/p/6307265.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!