我有一个日期/时间字符串,我想将其转换为没有时间的日期。我想添加另一个字段来存储这个新值。我试了下面的,但它不起作用。有没有办法从字符串中删除时间部分?
对象[{
"ID" : "001247174102",
"VersionInfo" : {
"IsLatestVersion" : true,
"VersionDate" : "2019-09-19T10:23:46.429-06:00"
}
}]
TESTONE = {
$addFields: {
DateTest: {$dateFromString: { format: "%Y-%m-%d", dateString: "$VersionInfo.VersionDate", onNull: new Date(0)} }
}
};
你应该永远不要将日期/时间值存储为字符串。所以在这种情况下,首先制作合适的Date
对象,然后将时间设置为00:00:00
:
{
$addFields: {
DateTest: {
$dateFromString: {
format: "%Y-%m-%dT%H:%M:%S.%Lz",
dateString: "$VersionInfo.VersionDate",
onNull: new Date(0)
}
}
}
},
{
$set: {
DayTest: {
$dateFromParts: {
year: {$year: "$DateTest"},
month: {$month: "$DateTest"},
day: {$dayOfMonth: "$DateTest"}
}
}
}
},
如果你运行的是Mongo 5.0版本,你可以把它写得更短:
{
$addFields: {
DateTest: {
$dateFromString: {
format: "%Y-%m-%dT%H:%M:%S.%Lz",
dateString: "$VersionInfo.VersionDate",
onNull: new Date(0)
}
}
}
},
{
$set: {
DayTest: {
$dateTrunc: {
date: "$DateTest",
unit: "day"
}
}
}
},