【发布时间】:2019-01-23 21:46:34
【问题描述】:
我有以下型号的收藏:
const VisitSchema = new mongoose.Schema({
priority: { type: Number, min: 1, max: 3, required: true },
datetime: { type: Date, required: true },
// some other information
});
我正在尝试对所有文档进行排序,以使更接近当前日期的访问显示在后面的访问之前,但在一天之内,必须首先显示优先级较高的访问。
例如:考虑
A (17-08-2018 14:00:00, P3)
B (17-08-2018 15:00:00, P2)
C (18-08-2018 15:00:00, P1)
排序时,所需的响应应该是[B, A, C],因为在17-08-2018 日,B 的优先级高于A,即使A 更早,即使C 的优先级高于C A 和 B 都在晚些时候。
我正在寻找一种首先按datetime 排序的方法,但只考虑日期部分并忽略时间,然后按priority。我目前的尝试完全考虑了datetime,给了我错误的排序:
Visit.find().sort('datetime priority')
编辑:我知道我可以使用Array.sort() 做到这一点。问题是直接从mongoose 执行此操作,而不是检索数据然后再进行排序。
【问题讨论】:
标签: node.js mongodb mongoose aggregation-framework