码迷,mamicode.com
首页 > 编程语言 > 详细

mongo对分组数据进行排序

时间:2019-06-14 16:09:51      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:pip   ring   代码   line   weight   管道   gate   first   利用   

分组之后希望按原字段进行排序,比如说时间戳,可以在分组数据中用$first显示原数据,然后在利用管道对该字段进行排序

参考:

db.xx.aggregate([
    {"$match":{"timestamp":    {"$gte":1557813600,"$lte":1560492000},"service":{"$in":["bauhinia","internal"]}}},
    {
        "$group":{
            "_id":{"service":"$service","timestamp":"$timestamp"},
            "flow":{$sum:{$multiply:["$rate","$count"]}},
            "timestamp":{"$first":"$timestamp"},
            },
    },
    {"$sort":{"timestamp":1}},
 ])

go语言代码参考

pipelines := []bson.M{
        //如果 $match 位于管道的第一个阶段,可以利用索引来提高查询效率
        {"$match": bson.M{"timestamp": bson.M{"$gte": float64(cursorTimeStamp), "$lte": float64(nowTimeStamp)},"service":bson.M{"$in":models.ServiceArr}}},
        {"$group": bson.M{
            "_id":  bson.M{"service": "$service", "timestamp": "$timestamp"},
            "flow": bson.M{"$sum": bson.M{"$multiply": []string{"$rate", "$count"}}},
            //额外的timestamp用于排序
            "timestamp":bson.M{"$first":"$timestamp"},
        }},
        {"$sort":bson.M{"timestamp":1}},
    }

 

mongo对分组数据进行排序

标签:pip   ring   代码   line   weight   管道   gate   first   利用   

原文地址:https://www.cnblogs.com/pokid/p/11023605.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!