【问题标题】:MongoDB find objects sorted by string dateTimeMongoDB 查找按字符串 dateTime 排序的对象
【发布时间】:2021-01-24 16:12:55
【问题描述】:

我有一个具有以下结构的公司的 mongoDB:

"name": "CORESITE",
"isin": "us21870q1058",
"XDateInserted": "2020-09-16 14:19",
"XDateUpdated": "2020-10-09 14:38",

我希望将所有公司查询到一个按 XdateUpdated 排序的数组。以下代码成功按名称对结果进行排序,但是,按 XdateUpdated 排序只会返回一个随机顺序。有什么解决办法吗?

    const allCompanies = await database
    .get()
    .db(Mongo.db)
    .collection(Mongo.CC)
    .find(
        {
            circulate: { $ne: false },
        },
        {
            projection: {
                _id: 0,
                isin: 1,
                name: 1,
                XDateInserted: 1,
            },
        }
    )
    .sort({ name: -1 })
    .toArray();

【问题讨论】:

    标签: mongodb sorting datetime collections


    【解决方案1】:

    这是一个使用聚合的解决方案。 您首先必须将字符串日期转换为日期类型。然后排序。

    const allCompanies = await database
    .get()
    .db(Mongo.db)
    .collection(Mongo.CC)
    .aggregate([
        {
            $addFields: {
                updatedDateFormatted: {
                    $dateFromString: {
                        dateString: "$XDateUpdated"
                    }
                }
            }
        },
        {
            $sort: {
                updatedDateFormatted: -1
            }
        },
        {
            $project: {
                updatedDateFormatted: 0 // To hide the custom field from result
            }
        }
    ])
    .toArray();
    

    【讨论】:

      猜你喜欢
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-28
      • 1970-01-01
      • 2017-11-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多