MongoDB如何组内排序并加序号?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

MongoDB如何组内排序并加序号?

李博 bluemind 2019-04-08 11:48:12 3110

如:
{"behavior" : "S_0004", "createTime" : "2019-03-17 22:52:35", "userId" : "800202"},
{"behavior" : "S_0009", "createTime" : "2019-03-17 20:40:42", "userId" : "800202"},
{"behavior" : "S_0056", "createTime" : "2019-03-17 09:31:22", "userId" : "800200"},
{"behavior" : "S_0050", "createTime" : "2019-03-17 09:31:30", "userId" : "800200"}
想按userId分组,组内按createTime升序排序,并加入一个排序的字段,得到:
{"userId" : "800202", "behavior" : "S_0009", "sort" : 1},
{"userId" : "800202", "behavior" : "S_0004", "sort" : 2},
{"userId" : "800200", "behavior" : "S_0056", "sort" : 1},
{"userId" : "800200", "behavior" : "S_0050", "sort" : 2}
这个应该怎么写?刚入门,搞了好久都没写出来...

mongodb排序 mongo排序
分享到
取消 提交回答
全部回答(1)
  • 李博 bluemind
    2019-07-17 23:32:45

    序号目前并没有这样的方法可以加上去,但是这个并不是一个必要的需求,只会让你使用的时候更方便。实际上只要分组有了,序号完全可以在程序端生成。如果不考虑序号的问题,那么就很简单了,甚至都不用分组,而且不分组实际上会更高效:

    db.coll.find({}, {

    _id: 0,
    userId: 1,
    behavior: 1

    }).sort({

    userId: 1,
    createTime: 1

    });
    这个查询在具有以下索引的时候会更高效:

    db.coll.createIndex({userId: 1, createTime: 1});

    0 0
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

相似问题
最新问题
推荐课程