开发者社区> 问答> 正文

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

如:
{"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}
这个应该怎么写?刚入门,搞了好久都没写出来...

展开
收起
李博 bluemind 2019-04-08 11:48:12 4740 0
1 条回答
写回答
取消 提交回答
  • 云栖社区Java、Redis、MongoDB运营小编,有意合作请联系钉钉:15810436147

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

    db.coll.find({}, {

    _id: 0,
    userId: 1,
    behavior: 1

    }).sort({

    userId: 1,
    createTime: 1

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

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

    2019-07-17 23:32:45
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
开源数据库 MongoDB 专场 MongoDB疑难杂症分析及优化 立即下载
阿里云MongoDB云服务构建 立即下载
饿了么高级架构师陈东明:MongoDB是如何逐步提高可靠性的 立即下载