想基于mongodb制作一个日志分析系统,单个文档如下所示:
{
"_id" : ObjectId("5c6a14c4421aa97a4714b291"),
"some":"data"
"startTime" : ISODate("2019-02-18T02:13:24.244Z"),
"endTime" : ISODate("2019-02-18T02:13:24.279Z")
}
由于startTime是毫秒级的时间,本人向基于秒级的时间进行group,所以写了如下代码进行转换:
db.apiMonitor.aggregate([
{
$project:{
groupField:'$startTime'
}
},{
$project:{
groupField:{
$dateToString:{
format:'%Y-%m-%d %H:%M:%S',
date:'$groupField'
}
}
}
},{
$project:{
groupField:{
$dateFromString:{
format:'%Y-%m-%d %H:%M:%S',
dateString:'$groupField'
}
}
}
}
])
过程是通过$dateToString将ISODate转换成一个时间字符串去除毫秒的信息,然后通过$dateFromString重新转换会ISODate,但是运行出错,如下:
command failed: {
"ok" : 0,
"errmsg" : "Unrecognized expression '$dateFromString'",
"code" : 168,
"codeName" : "InvalidPipelineOperator"
}
能否解释一下是因为什么原因导致这个报错,或者有没有别的解决方案?
mongodb的版本必须要3.6以上才能使用$dateFromString