我想获得观看次数+点赞次数最多的20条记录,该怎么做?

时间:2019-06-27 16:25:11

标签: node.js mongodb mongoose

我在下面有一个架构:

enter image description here

我想获得20个具有最高观看次数+点赞次数的记录,该怎么做?

2 个答案:

答案 0 :(得分:0)

据我所知,无法在一个操作中执行此操作,但是您可以添加一个单独的字段,其中包含视图+喜欢,以及用户排序desc +限制:20

答案 1 :(得分:0)

您可以使用project获取喜欢的次数,然后将其与另一个项目进行管道传输,并add观看和喜欢。

db.demo.aggregate([{
  $project: {
    likes: {
      $size: "$likes"
    },
    views: 1,
  }
}, {
  $project: {
    total: {
      $add: [
        "$likes", "$views"
      ]
    }
  }
},{ 
  $sort : { 
    total : -1
  } 
},{ 
  $limit : 20 
}])