Node.js Nodejs Mongoose-一个数据库调用=按不同条件排序的两个独立数组
我正在使用Nodejs(express)+MongoDB,我想问一下是否有办法访问数据库以获取一组文档(为了简单起见,让我们说一下具有likes计数和views计数属性的博客帖子),首先对结果进行排序,将其存储在array1中,然后在不调用数据库的情况下再次对其进行排序,然后按视图进行排序,将其存储在array2中,因此结果将为:Node.js Nodejs Mongoose-一个数据库调用=按不同条件排序的两个独立数组,node.js,database,mongodb,express,mongoose,Node.js,Database,Mongodb,Express,Mongoose,我正在使用Nodejs(express)+MongoDB,我想问一下是否有办法访问数据库以获取一组文档(为了简单起见,让我们说一下具有likes计数和views计数属性的博客帖子),首先对结果进行排序,将其存储在array1中,然后在不调用数据库的情况下再次对其进行排序,然后按视图进行排序,将其存储在array2中,因此结果将为: 1数据库访问 array1:按喜欢数排序的博客帖子 array2:按视图计数排序的博客文章 因此,基本上我不想链接排序查询,但我希望输出是2个数组,每个数组按不同
- 1数据库访问
- array1:按喜欢数排序的博客帖子
- array2:按视图计数排序的博客文章
因此,基本上我不想链接排序查询,但我希望输出是2个数组,每个数组按不同的条件排序。非常感谢。您可以使用aggregate进行以下操作:
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
}
}
])
结果,您将得到两个按不同查询排序的独立数组。您的问题是什么?可能我的方法完全错误(我没有那么丰富的经验),但如果每次数据库访问都会消耗服务器资源,然后我认为最好搜索文档一次,然后生成两个数组,每个数组按不同的标准排序,而不是调用数据库两次,然后在第一次调用中按视图排序文档,第二次调用中按喜欢排序,否则我错了?直接从查询中获取排序后的数组array1,然后可以使用从array1创建array2。问题出在哪里?我的想法与mozilla相同,但正如mozilla所说,.sort()的速度和空间复杂性无法保证,因此我的想法是MongoDB排序算法将比javascript.sort()更快。我在Mongo shell中尝试了它,它确实有效。非常感谢。