MongoDB 日期字符串以不同格式排序

问题描述 投票:0回答:0

由于业务需求,我必须根据日期字段对记录进行排序,该日期字段将值存储为 2 种格式的日期字符串。

  1. Yyyy-Mm-Dd
  2. Yyyy-Mm-DdThh:mm:ss+00:00

例如,假设我们有如下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() 相比,性能要差得多。

mongodb sorting pymongo
© www.soinside.com 2019 - 2024. All rights reserved.