MongoDB - 按帖子对象的评论日期排序; 1个收藏

时间:2016-07-23 19:21:14

标签: mongodb

我有一个集合:

{
  _id - ObjectId
  "post_title": "first post",
  "post_date: 123456,
  "comments" [
    {
      "comment_title": "test",
      "comment_time": 123456
    },
    {
      "comment_title": "test2",
      "comment_time": 1234567
    }  
  ]  
},

{
  _id - ObjectId
  "post_title": "second post",
  "post_date: 1234567,
  "comments" [
    {
      "comment_title": "test3",
      "comment_time": 12345678
    },
    {
      "comment_title": "test4",
      "comment_time": 123456789
    }  
  ]  
}

现在,我希望通过降序获得订单上的所有评论,无论帖子如何。只想按降序列出所有评论。我不确定它是否可能使用单个MongoDB查询,因此不会将任何内容作为我的尝试。

任何帮助都非常感激。

2 个答案:

答案 0 :(得分:0)

要按降序comment_time排序,请使用以下聚合:

db.device.aggregate([
  {$unwind: "$comments"}, 
  {$sort: {"comments.comment_time":-1}}, 
  {$group: {_id:"$_id", comments: {$push:"$comments"}}}
]);

执行:

  • $unwind您的评论数组
  • $sort comments.comment_time降序(-1)
  • $group使用已排序的值
  • 来回放数组

答案 1 :(得分:0)

如果您只需要按时间降序排列评论列表

db.posts.aggregate([
    {$unwind: "$comments"}, 
    {$project: { "title": "$comments.comment_title", "time": "$comments.comment_time"}}, 
    {$sort: { "time": -1 }}
])