如何在mongo聚合不起作用的情况下将字符串转换为日期总是返回null?

Posted

技术标签:

【中文标题】如何在mongo聚合不起作用的情况下将字符串转换为日期总是返回null?【英文标题】:How can convert string to date with mongo aggregation not working always return null? 【发布时间】:2021-08-02 09:52:10 【问题描述】:

在一个集合中,我存储了这种文档


   "_id" : 1,
   "created_at" : "2021-11-01",
    ...
.

    "_id" : 2,
    "created_at" : "2021-12-01",
    ...

我想将 created_at 转换为日期并使用此方法

db.collection.aggregate([
    $project: created_at:$dateFromString:dateString:'$created_at'
])

但结果始终为空 有人有解决这个问题的方法吗?

【问题讨论】:

【参考方案1】:

默认情况下,$dateFromString 运算符将假定字符串在 %Y-%m-%dT%H:%M:%S.%LZ 中。

如果不是,您的场景就是这种情况,您必须手动输入您希望 MongoDB 使用 format 选项解析字符串的格式。

db.collection.aggregate([
  
    $project: 
      created_at: 
        $dateFromString: 
          dateString: "$created_at",
          "format": "%Y-%m-%d",
        
      
    
  
])

【讨论】:

感谢您的回答,我应用了此更改,但没有任何更改 它在我本地运行良好。在此处查看 MongoDB 游乐场结果。 mongoplayground.net/p/HsrJFhJ-sDc 非常感谢,它对我有用,谢谢

以上是关于如何在mongo聚合不起作用的情况下将字符串转换为日期总是返回null?的主要内容,如果未能解决你的问题,请参考以下文章

在不丢失信息的情况下将因子转换为数字 R(as.numeric() 似乎不起作用)[重复]

在没有任何聚合函数的情况下将列数据转换为行

如何使用 mongo 聚合将字符串转换为日期?

如何在没有 ObjectId 的情况下将 Mongo 与 Spring Data 一起使用

pymongo中带有forEach函数的Mongo聚合查询不起作用

如何在不使用数据透视的情况下将行转换或转置为 SQL 中的列?