我在mongo中有一个ISODate字段。 有没有简单的方法将其转换为unix时间戳?
即: ISODate(“2018-03-30T13:06:05.739-07:00”)=> 1522440365739
答案 0 :(得分:1)
事实证明,您需要先使用减法方法将其转换为NumberLong:
即:
db.collection.aggregate([{
$project: {date: {$subtract: ['$date', new Date(0)]}}
}])
如果您希望将其作为字符串,则需要使用substr转换它:
db.collection.aggregate([{
$project: {
date: {$substr: [{$subtract: ['$date', new Date(0)]}, 0, -1]}
}
}])
答案 1 :(得分:1)
从4.0开始,您可以使用$toDecimal
。对于当今的大多数时间戳来说,$toInt
太小了。
db.collection.aggregate([{
$project: {
date: {'$toDecimal': '$date'}
}
}])
这将返回毫秒中的Unix时间戳。要转换为秒,请使用$divide
的{{1}}
https://docs.mongodb.com/manual/reference/operator/aggregation/toDecimal/