如:
{"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}
这个应该怎么写?刚入门,搞了好久都没写出来...
序号目前并没有这样的方法可以加上去,但是这个并不是一个必要的需求,只会让你使用的时候更方便。实际上只要分组有了,序号完全可以在程序端生成。如果不考虑序号的问题,那么就很简单了,甚至都不用分组,而且不分组实际上会更高效:
db.coll.find({}, {
_id: 0,
userId: 1,
behavior: 1
}).sort({
userId: 1,
createTime: 1
});
这个查询在具有以下索引的时候会更高效:
db.coll.createIndex({userId: 1, createTime: 1});
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。