【问题标题】:Error while saving date in mongodb using MongoOperations Spring Java使用 MongoOperations Spring Java 在 mongodb 中保存日期时出错
【发布时间】:2020-09-30 06:08:27
【问题描述】:

我需要在 mongodb 中保存带有日期的 json 对象,这里是 json 示例:

{
 "modifiedon": {
 "$dateFromString": {
     "dateString": "2017-02-08T12:10:40.787"
  }
},
"modifiedby": "ramsha-GRM1 Ambreen",
"id": 537
}

我希望 'modifiedOn' 值应另存为

"modifiedon": ISODate("2017-02-08T12:10:40.78")

这是使用 java 将 json 插入 mongodb 的代码

String json = {<JSONVALUE>};
mongoOperations.insert(json,"risk");

但是 MongoOperations 保存 JSON 时没有处理 $dateFromString ,这是在 MongoDB 中格式化的日期。任何线索都非常感谢谢谢

【问题讨论】:

  • $dateFromString 是一个聚合运算符 - 它不能在保存的数据/JSON 中使用。请包含您用于保存数据的代码。
  • @prasad_ 我添加了将 JSON 插入 mongodb 的代码片段
  • MongoTemplate 没有将 JSON 作为参数的 insert 方法。
  • 您可以在documentation 中查找MongoTemplate#insert 的用法示例。

标签: java spring mongodb date mongotemplate


【解决方案1】:

通过将输入 JSON 对象修改为解决了上述问题

{ "modifiedon": { "$date": "2020-09-30T11:32:58.000Z" }, "modifiedby": "ramsha-GRM1 Ambreen", "id": 229 }

它作为日期对象保存在 MongoDB 中,我可以查询日期

【讨论】:

    【解决方案2】:

    dateString 的格式更改为using ISO-8601 representation。换句话说,格式应该由DateTimeFormatter#ISO_INSTANT 指定。下面给出了以这种格式生成的字符串的示例:

    import java.time.Instant;
    
    public class Main {
        public static void main(String[] args) {
            System.out.println(Instant.now());
        }
    }
    

    输出:

    2020-10-02T13:52:08.564327Z
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 2014-07-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多