将日期转换为时间戳mongodb

时间:2018-12-08 11:34:19

标签: mongodb mongoose aggregation-framework graphql apollo

我对MongoDB中的日期有疑问。创建帖子时,我会使用Date.now()获取日期。当我检查数据库时,它存储为:ISODate("2018-12-08T09:40:38.623+0000")

如果我执行普通的GraphQL查询,将得到结果:"created_at": "1544262038623"。 在我的架构中,查询定义为created_at: String问题编号1:如何进行查询以显示日期,而不是自时期以来的时间戳?

问题编号2:我想获得时间戳以进行一些汇总计算。但是总是以日期格式,无论我做什么,我都无法获得时间戳。我试过:$ toDecimal,新的Date(“ $ created_at”)和其他东西。我怎么做?我需要自纪元以来的毫秒数,如上面的查询(1544262038623)。

其他信息:使用猫鼬和阿波罗。 MongoDB是mLab。

Post.aggregate([
  { $match: { author_id: "uRKNnDZIv" }},
  { $addFields: { 
    timestamp: "$created_at"
  }
])

1 个答案:

答案 0 :(得分:0)

如果要将日期转换为时间戳,则可以使用$toLong聚合

Post.aggregate([
  { "$match": { "author_id": "uRKNnDZIv" }},
  { "$addFields": { 
    "timestamp": { "$toLong": "$created_at" }
  }}
])

如果您想将时间戳转换为日期,则可以使用$toDate聚合

Post.aggregate([
  { "$match": { "author_id": "uRKNnDZIv" }},
  { "$addFields": { 
    "timestamp": { "$toDate": "$created_at" }
  }}
])