首页 > 解决方案 > Nodejs Mongoose - 一个数据库调用 = 按不同标准排序的两个独立数组

问题描述

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

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

标签: node.jsdatabasemongodbexpressmongoose

解决方案


您可以使用$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
      }
   }
])

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


推荐阅读