[英]MongoDB sort by custom calculation in Node.JS mongodb driver
我正在使用 Node.JS MongoDB 驱动程序。 我有一个包含salary
和number of vacancies
的工作列表,我想根据一个规则对它们进行排序,如果salary
或number of vacancies
数量更大,它们将在排序中获得最高优先级,我想出了这个简单的公式
( salary / 100 ) + num_of_vacancies
例如:
最优先的
{ salary: 5000 , num_of_vacancies: 500 } // value is 550
{ salary: 50000 , num_of_vacancies: 2 } // value is 502
并且优先级较低
{ salary: 5000 , num_of_vacancies: 2 } // value is 52
但我的问题是,据我所知,MongoDB 排序仅需要 arguments 以升序或降序排序,并使用要排序的属性。 如何使用自定义表达式进行排序。
MongoDB 中的数据如下所示 // 不是完整版本
{
title:"job title",
description:"job description",
salary:5000,
num_of_vacancy:50
}
这只是一种选择。 为 mongo 驱动程序调整它。
$addFields
我们创建要排序的字段,命名为 toSortLater 只是出于语义目的。$sort
阶段,并首先对高值进行排序。 更改为 1 以获得相反的行为。db.collection.aggregate([{
$addFields:{
toSortLater:{
$add:[
{$divide:["$salary", 100]},
"$num_of_vacancies"]
}}}, {$sort:{"toSortLater":-1}}
])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.