node.js - Nodejs Mongoose - 一个数据库调用 = 按不同标准排序的两个独立数组
问题描述
我正在使用 Nodejs(express) + MongoDB,并想问是否有一种方法可以访问数据库以获取一组文档(为简单起见,假设博客文章具有喜欢计数和视图计数属性),首先按喜欢对结果进行排序count 将其存储在 array1 中,然后无需再次调用数据库,按视图计数对其进行排序并将其存储在 array2 中,因此结果将是:
- 1个数据库访问
- array1:按赞数排序的博文
- array2:按浏览次数排序的博客文章
所以基本上我不想链接排序查询,但我希望输出是 2 个数组,每个数组按不同的标准排序。非常感谢。
解决方案
您可以使用$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
}
}
])
结果,您将获得两个按不同查询排序的单独数组。
推荐阅读
- javascript - Why my ComboBox is empty though the variable is initialized?
- python-3.x - concurrent.futures.ThreadPoolExecutor 为什么同步执行?
- firebase - Flutter 'Packages get' failed after adding firebase dependency
- java - 如何解决这个“配置‘编译’已过时,已被‘实现’和‘api’取代。”
- java - Java error - The type List
is not visible - The type Map is not visible - django - 使用 crontab 在弹性 beanstalk worker 实例上运行 django 管理命令
- php - 正则表达式:解析 C# 源代码中的命名空间
- batch-file - 将 cURL 和 jq 输出保存到批处理脚本中的变量
- sapui5 - 如何正确使用 JSONModel 和 setModel?
- angular - 通过子组件的角度更改页面