mongodb - NodeJS MongoDb $sort 在聚合查询中不起作用
问题描述
我为结果创建了一个 GET api,带有过滤器、分页和排序。但是,尽管数据是正确的,但排序并没有正确进行。
let skip = 0, limit = 10, findCond = {centerId: self.centersModel.getObjectId(userData.id)};
if(queryParams.result) findCond['result'] = {"$regex": queryParams.result, "$options": 'i'};
if(queryParams.fromDate) findCond['created_at'] = {$gte: moment(queryParams.fromDate + ' 00:00:00', 'DD-MM-YYYY HH:mm:ss').toDate()};
if(queryParams.toDate) {
if(findCond.hasOwnProperty('created_at')) findCond['created_at']['$lte'] = moment(queryParams.toDate + ' 23:59:59', 'DD-MM-YYYY HH:mm:ss').toDate();
else findCond['created_at'] = {$lte: moment(queryParams.toDate + ' 23:59:59', 'DD-MM-YYYY HH:mm:ss').toDate()};
}
if(queryParams.perPage) limit = parseInt(queryParams.perPage);
if(queryParams.page) skip = (parseInt(queryParams.page) - 1) * limit;
let aggregate = [
{ "$match": findCond },
{ "$sort": {"created_at": 1} },
{ "$skip": skip },
{ "$limit": limit }
];
console.log(aggregate)
self.resultsModel.aggregate(aggregate, function(err, results) {
console.log(err, results);
});
结果:
{
"status": "ok",
"results": [
{
"id": "5db83e69fcee977a20b24260",
"result": "Pass",
"examDate": "29/10/2019 06:58 PM"
},
{
"id": "5db6b4d33ffd7d3ccde175d1",
"result": "Pass",
"examDate": "28/10/2019 08:38 PM"
},
{
"id": "5db83e9bfcee977a20b24262",
"result": "Pass",
"examDate": "29/10/2019 06:58 PM"
},
{
"id": "5db83ecafcee977a20b24264",
"result": "Pass",
"examDate": "29/10/2019 06:59 PM"
},
{
"id": "5db83f40fcee977a20b24266",
"result": "Fail",
"examDate": "29/10/2019 07:01 PM"
},
{
"id": "5db84395bb402b0f3de43ff7",
"result": "Pass",
"examDate": "29/10/2019 07:20 PM"
},
{
"id": "5db843c0bb402b0f3de43ff9",
"result": "Pass",
"examDate": "29/10/2019 07:20 PM"
}
]
}
其中一个日期是 2019 年 10 月 28 日,介于 29/10 之间。请告诉我一个原因或解决方案。
解决方案
我认为,为了减少混淆,您应该共享已记录的聚合变量的值,而不是在对其应用转换后创建的响应。
推荐阅读
- laravel - Laravel JSON 分页:如何从下一个/上一个链接中删除箭头?
- html - 限制 svg 路径中的点数
- apache-kafka - 带有服务器发送事件 (SSE) 的 kafka 主题
- node.js - 谷歌语音算法。测试 Beta 功能
- mapbox - Mapbox 点不如 Mapbox studio 数据集中的点准确
- python - 根据列中唯一值的数量计算的新变量
- docker - 如何在普罗米修斯中公开 nginx 指标?
- components - Laravel Livewire 线:单击()删除组件属性?
- android - Android Studio:当我开始一个项目时,我分叉但得到一个错误“没有找到'app'的变体。”
- android - 如何在android中实现Realm DB上的Inner Join