我正在使用MongoDB聚合框架对我的数据库中的一些内容进行分组,排序和投影。我的结果数组的元素如下所示
{
someField: "someField",
timestamp: "2017-12-05T19:00:00.000Z"
}
我讨论的聚合管道步骤如下所示
{
$project: {
_id: 0,
someField: 1,
timestamp: '$_id.timestamp',
}
}
我想将DateTime字符串转换为ISODate。如果我使用ISODate('$timestamp')
,则mongo客户端会返回错误Invalid ISODate
。
另一种方法是仅使用Date('$timestamp')
,只返回我的本地日期,就好像我将使用Date()
一样。然而,如果我将print(ISODate("2017-12-05T19:00:00.000Z"))
直接输入mongo客户端,一切都按预期工作。
有什么建议吗?
编辑:我们正在使用Mongo 3.4。版本3.6提供了一个解决方案,但我不确定我们是否可以升级到3.6。 (见下面的答案)
答案 0 :(得分:1)
您可以使用3.6中提供的新$dateFromString
运算符。
db.collection.aggregate([
{
"$project": {
"timestamp": {
"$dateFromString": {
"dateString": "$timestamp"
}
}
}
}
])