由于业务需求,我必须根据日期字段对记录进行排序,该日期字段将值存储为 2 种格式的日期字符串。
例如,假设我们有如下2条记录:
[
{
_id: 01
modified_date: "2023-01-01T01:01:01+00:00"
},
{
_id: 02
modified_date: "2023-01-02"
}
]
当我运行查询时:
db.collection.find({}).sort('modified_date', 1)
对于 modified_date 的升序,我希望按 [01, 02] 的顺序查看记录,因为 2023-01-01T01:01:01+00:00 早于 2023-01-02。
然而,实际结果是 [02, 01] 并且似乎 mongodb 的 sort() 正在考虑“2023-01-02”比“2023-01-01:01:01:01+00:00”短" 优先级高于比较实际值(不像 python 字符串排序逻辑,使用 python 对以上 2 个日期字符串进行排序,"2023-01-01:01:01:01+00:00" 小于 "2023-01" -02")
我需要这方面的帮助,看看是否有人知道如何正确地告诉 mongodb 对日期字符串进行有意义的排序。
注意:我只想对游标对象(由 db.collection.find() 返回)使用 sort()。我已经尝试过聚合 + $addField + $sort。但是当评估数百万条记录时,与 find() + sort() 相比,性能要差得多。