【发布时间】:2019-07-15 21:55:27
【问题描述】:
我正在运行一个 Node.JS 服务器,它使用 Mongoose 来查询一个包含 date 字段的 MongoDB 表。但是,当我按date 对结果进行排序时,它们实际上只是按时间排序,而忽略了实际日期。例如当我运行查询时
Competition.find({})
.sort('date')
.exec()
.then(data => {
res.json(data);
})
.catch(console.log);
返回:
{"_id":"5c6c99e6e7179a27eb63a9a0","date":"2019-02-24T01:00:00.000Z","game_name":"UFO","status":"WAITING","comp_id":7},
{"_id":"5c6b95c8e7179a27eb62e7cf","date":"2019-02-19T06:41:47.185Z","game_name":"UFO","status":"COMPLETED","comp_id":6},
{"_id":"5c6b95b4e7179a27eb62e7cb","date":"2019-02-19T06:41:57.174Z","game_name":"UFO","status":"COMPLETED","comp_id":5},
{"_id":"5c6b95a4e7179a27eb62e7be","date":"2019-02-19T06:42:02.170Z","game_name":"UFO","status":"COMPLETED","comp_id":4},
{"_id":"5c6b9533e7179a27eb62e7a9","date":"2019-02-19T06:42:07.176Z","game_name":"UFO","status":"COMPLETED","comp_id":1},
{"_id":"5c6b958de7179a27eb62e7b8","date":"2019-02-21T18:48:50.497Z","game_name":"UFO_test","status":"COMPLETED","comp_id":3}
您可以在此处看到第一个条目的日期为 02-24,因此它应该显示在最后,但由于时间是 1:00:00,它显示在日期为 02-19 和 02-21 的其他条目之前,因为他们的时间较晚(例如06:41:47)。
比赛表的架构如下:
const schema = new mongoose.Schema({
date: Date,
game_name: String,
status: String,
comp_id: Number,
});
我尝试以 Mongoose 支持的几种不同方式执行日期排序,但它们都返回相同的结果。如果有人可以为此问题提供修复或解决方法,将不胜感激!
【问题讨论】:
-
尝试使用时刻或纪元保存日期来保存日期。问题在于如何保存日期。
标签: javascript node.js mongodb mongoose