Nodejs猫鼬-一个数据库调用=两个按不同条件排序的独立数组

时间:2019-02-19 17:47:17

标签: node.js database mongodb express mongoose

我正在使用Nodejs(express)+ MongoDB,想问一下是否有一种方法可以访问数据库以获取一组文档(为简单起见,假设博客帖子的点击计数和查看计数属性),并对结果进行排序首先按喜欢将其存储在array1中,然后不调用databse再次按视图计数对其进行排序并将其存储在array2中,因此结果将是:

  • 1个数据库访问
  • array1:按喜欢计数排序的博客帖子
  • array2:博客文章按观看次数排序

所以基本上我不想链接排序查询,但我希望输出是2个数组,每个数组按不同的条件排序。非常感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用$facet进行汇总,如下所示:

db.blog.aggregate([
   {
      $facet: {
        sortByLikeCounts: [ { $sort: { likeCounts: -1 }} ],      // likeCounts is field name which is used to save total counts of like 
        sortByViewCounts: [ { $sort: { viewCounts: -1 }} ]       // viewCounts is field name which is used to save total counts of view
      }
   }
])

结果是您将获得两个单独的数组,并按不同的查询排序。