MongoDB:删除DateTime字符串中的时间部分



我有一个日期/时间字符串,我想将其转换为没有时间的日期。我想添加另一个字段来存储这个新值。我试了下面的,但它不起作用。有没有办法从字符串中删除时间部分?

对象
[{ 

"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"
}
}
}
},

最新更新