【问题标题】:Convert date to timestamp mongodb将日期转换为时间戳 mongodb
【发布时间】:2019-05-09 23:06:24
【问题描述】:

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

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

问题 2:我想获取时间戳来做一些聚合计算。但它总是采用日期格式,无论我做什么,我都无法获得时间戳。我试过:$toDecimal、new Date("$created_at") 和其他东西。我怎么做?我需要自纪元以来的毫秒数,如上面的查询(1544262038623)。

附加信息:使用猫鼬和阿波罗。 MongoDB 是 mLab。

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

【问题讨论】:

    标签: mongodb mongoose aggregation-framework graphql apollo


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2021-10-23
      • 2019-09-15
      • 2018-12-25
      • 1970-01-01
      • 2016-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-19
      相关资源
      最近更新 更多