标签:聚合 mongo db sex 文档 user aggregate group id
//对成绩集合做聚合,分组,管道操作
db.student.aggregate( [
{$lookup:{from: "score",localField: "_id",foreignField: "stuId",as: "results"}}, // 执行1,结果给2
{$match:{"results.score": {$gte: 70}}}, // 执行2,结果给3
{$sort: {"_id": -1}}, //按照_id字段做降序排序,1:是升序。 // 执行3,依次...
{$skip: 2}, //指定跳过个document
{$limit: 1} //指定取几个document
] )
---------------------------------------------------------------------------------------------------------------------------------
//分组操作[1],类似于:select sex,count(*) from user group by sex;
db.user.aggregate([{$group: {"_id": "$sex", "total": {$sum: 1}}}])
//分组操作[2],类似于:select sex,sum(age) from user group by sex;
db.user.aggregate([{$group: {"_id": "$sex", "total": {$sum: "$age"}}}])
//分组操作[3],给分组后的结果集后添加一个数组,数组组成是分组后name组成的数组
db.user.aggregate([{$group: {"_id": "$sex", "names": {$push: "$name"}}}])
db.user.aggregate([{$group: {"_id": "$sex", "hobbys": {$push: "$hobby.name"}}}])
//使用$addToSet添加数组,但是不常见副本,和$push是一样的效果
db.user.aggregate([{$group: {"_id": "$sex", "names": {$addToSet: "$name"}}}])
//使用$first:根据资源文档的排序获取第一个文档数据。
db.user.aggregate([{$group: {"_id": "$sex", "names": {$first: "$name"}}}])
//使用$last:根据资源文档的排序获取最后一个文档数据
db.user.aggregate([{$group: {"_id": "$sex", "names": {$last: "$name"}}}])
标签:聚合,mongo,db,sex,文档,user,aggregate,group,id 来源: https://www.cnblogs.com/soren-wanglu/p/11211461.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。