如何在Mongo聚合管道中将字符串转换为数据

时间:2017-12-04 22:23:20

标签: mongodb aggregation-framework

在集合中,时间戳字段存储为字符串。

{
    "_id" : ObjectId("59a780a3da2100974a36cdca"),
    "datetime" : "2016-08-17 0:59"
    ...
}

我想在Mongo聚合piple行的第一阶段将字符串转换为日期。

db.collection.aggregate([
    {
        $addFields: {
            ts: new Date('$datetime')
        }
    }
])

我在管道外做了这个,工作正常。

{
    "_id" : ObjectId("59a780a3da2100974a36cdca"),
    "datetime" : "2016-08-17 0:59",
    "ts" : ISODate("2016-08-17T00:59:00.000-04:00"),
}

但是,如果我在聚合内部这样做。我得到了以下

{
    "_id" : ObjectId("59a780a3da2100974a36cdca"),
    "datetime" : "2016-08-17 0:59",
    "ts" : ISODate("1969-12-31T19:00:00.000-05:00")
}

0 个答案:

没有答案