mongodb - MongoDB:如何在 3.6 mongoDb 版本中解析日期?
问题描述
我在这里创建了Mongo Playground
当前输出显示基于 15 分钟时间间隔的结果。(将 updatedAt 值按 15 分钟分组,并显示某些字段的平均值)
目前 $dateToString 和 $dateFromString 正在使用格式来解析日期。我需要让它适用于 mongo 3.6 版(3.6 不支持 $dateFromString 的格式)
parsedDate: {
$dateFromString: {
dateString: "$_id.dateHour",
format: "%Y-%m-%dT%H"
}
}
如果我从 $dateToString 和 $dateFromString 中删除格式字段,查询仍会运行,但“dateHour”的输出显示的值与预期不同。(如下)
"dateHour": ISODate("2020-03-20T18:46:50Z"),
3.6 不支持格式字段。必须使此查询与 3.6 版本兼容。最终输出没有变化。
主要重点是在此更改后获得相同的“dateHour”值。
电流输出:
"dateHour": ISODate("2020-03-19T18:30:00Z"),
预期输出:
"dateHour": ISODate("2020-03-19T18:30:00Z"),
解决方案
使用$dateToParts及其对应的$dateFromParts
这是一个更新的游乐场
它所做的基本上是将日期分成几个部分:
{
$project: {
dateHour: {
$dateToParts: {
date: "$updatedAt"
}
}
}
}
会产生:
{
"dateHour": {
"day": 19,
"hour": 18,
"millisecond": 0,
"minute": 21,
"month": 3,
"second": 5,
"year": 2020
}
}
然后你从它的部分重建日期:
{
$project: {
reconstructedDateHour: {
$dateFromParts: {
year: "$dateHour.year",
month: "$dateHour.month",
day: "$dateHour.day",
hour: "$dateHour.hour"
}
}
}
}
推荐阅读
- css - 模糊“周围”文字
- php - php pdo update query not working properly
- jestjs - Use Jest expectations over the Detox custom ones
- php - PHP - Set boolean in function doesn't work
- python - Wagtail CMS not rendering navigation icons/images
- c - Issue when using pointer to line tokens in C
- python - MatplotlibDeprecationWarning: The rowNum and colNum attribute was deprecated in Matplotlib 3.2
- salesforce - Salesforce: How to automate report extraction as JSON/CSV
- mysql - mySQL 查询以查找与所有对象相关的对象。无聚合操作
- javascript - How can I pass data from component and use the data in a method?