比方说数据库存有 Post 类型的数据,每个文档记录了发布帖子的时间和该帖子获得的投票数:
... { time: 1481185194698, vote: 2 } ...
我这里想执行一个 find({})
操作,把所有帖子按照发布时间 24 小时间隔分组(新一天的组排前面),然后每个组内再按照投票数排序。我查遍了 MongoDB 的文档,没有找到解决方案,请问这可以办到吗?
![]() | 1 kidlj OP 我也查看了 Mongo 的 aggregate 操作,聚合的 $group 和 $bucket 操作都会合并文档,我这里只想查询,不想合并文档。 |
![]() | 2 wanganjun 2016-12-08 19:31:30 +08:00 via iPhone ![]() 用 mapReduce ,分组逻辑自己写 |
![]() | 4 wudanyang 2016-12-08 21:59:03 +08:00 怎么感觉你这个用 sort({time:-1,vote,1}) 就可以做到呢 |
![]() | 5 wudanyang 2016-12-08 21:59:30 +08:00 写错了: sort({time:-1,vote:1}) |
![]() | 6 kidlj OP @wudanyang 不行,这样同一天的帖子也会按照时间排序,而我想同一天的帖子按投票数排序。不同天的帖子按天数分组排序。 |
7 goophy 2016-12-08 22:17:08 +08:00 via iPhone 查 pipe , project 试试 |
![]() | 8 wudanyang 2016-12-09 10:35:12 +08:00 加个 date 字段 |