met*_*gfu 5 mongodb aggregation-framework
我在 mongo 中有一个 ISODate 字段。有没有简单的方法将其转换为unix时间戳?
即: ISODate("2018-03-30T13:06:05.739-07:00") => 1522440365739
从 4.0 开始,您可以使用$toDecimal. $toInt对于现在的大多数时间戳来说都太小了。
db.collection.aggregate([{
$project: {
date: {'$toDecimal': '$date'}
}
}])
Run Code Online (Sandbox Code Playgroud)
这将返回以毫秒为单位的 unix 时间戳。要转换为秒,请使用$divideby1000
https://docs.mongodb.com/manual/reference/operator/aggregation/toDecimal/
结果你需要首先使用减法将其转换为 NumberLong:
IE:
db.collection.aggregate([{
$project: {date: {$subtract: ['$date', new Date(0)]}}
}])
Run Code Online (Sandbox Code Playgroud)
如果您希望这是一个字符串,则需要使用 substr 进行转换:
db.collection.aggregate([{
$project: {
date: {$substr: [{$subtract: ['$date', new Date(0)]}, 0, -1]}
}
}])
Run Code Online (Sandbox Code Playgroud)