Mongoose / MongoDB - 按出现次数排序

时间:2017-04-11 14:06:28

标签: mongodb mongoose mongodb-query aggregation-framework

我正在尝试根据 postID 的最高出现时间以及日期内对我的回复进行排序。

我的收藏结构:

[
  {
    "postID": "2",
    "date": "2017-04-11 21:40:52",
  },
  {
    "postID": "1",
    "date": "2017-04-11 21:40:52",
  },
  {
    "postID": "2",
    "date": "2017-04-11 21:40:52",
  },
  {
    "postID": "2",
    "date": "2017-04-11 21:40:52",
  },
]

所以在这种情况下,最高出现的是 postID :2。所以我想要这样的东西:

{
    postID: 2,
    postID: 1
}

注意:请记住,我也需要在两个日期之间进行搜索。

对不起,如果这太明显了。我甚至不知道如何开始制作Mongo / mongoose'找到搜索。

我的筹码:

  • 使用mongoose的节点
  • MongoDB 3.2.5

任何输入都会有所帮助。感谢

1 个答案:

答案 0 :(得分:1)

您可以使用MongoDB聚合框架对特定属性进行分组。 Mongoose has a low-level wrapper围绕聚合框架。

您可以$group使用postID作为_id,它将为您提供每个的唯一值。然后你可以$sort。如果您愿意,还可以使用$project将该属性重命名为postID

Collection.aggregate([
  {$group: {_id: "$postID"}},
  {$sort: {_id: -1}},
  {$project: {postID: "$_id", _id: 0}}
]);