【发布时间】:2020-04-13 01:58:48
【问题描述】:
只是想知道最好的方法是什么。以下代码需要能够将字符串日期作为日期值按降序排序,但需要分页。
documentList = collection.find().skip(skip).limit(limit).sort(Sorts.descending("ReceivedDate"));
除了排序不工作之外,其余的工作都是一种享受。我仍然习惯使用 Mongo。认为最好找出做事的正确方法或好方法。尽早养成好习惯。
我发现的链接的不同之处在于我在分页中添加了。
我查看了一些链接,但不是 100% 确定我在使用 find 时需要什么。 Sort by date string (ascending) on Mongo MongoDB sorting date string (mm/dd/yyyy)
我们尝试使用降序分页的典型文档是
{
"_id" : ObjectId("5ddc80b3adbe1d0001bc50f7"),
"ReceivedDate" : "20/12/2019",
"ReceivedTime" : "08:00:00",
"batch_id" : "112233",
"EventMessage" : "SUCCESS",
"Observations" : 1,
"DataSet" : "xxxx",
"SetType" : "yyy",
"SetName" : "yyyxxx",
}
提前非常感谢, 罗素
【问题讨论】:
-
您可以考虑在排序之前使用聚合来适当地格式化日期。
-
我不明白为什么我不能按从字符串转换为日期的键进行排序。我来自 T-SQL 背景,您可以更轻松地完成这类事情。类似于以下内容,但语法几乎可以肯定是错误的。 documentList = collection.find().skip(skip).limit(limit).sort(Sorts.descending(date: { $dateFromString: { dateString: '$date' } }));
-
我发布了针对您的问题的解决方案的答案。我怀疑(并且不认为)您可以在光标的
sort方法中使用$expr。该解决方案使用聚合,我已经为此发布了Java代码。
标签: java mongodb sorting date pagination