MongoDB查找按字符串dateTime排序的对象



我有一个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();

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

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();

最新更新