MongoDB 错误:通过 JSON 文件以 ISO 格式将日期插入 MongoDB
Posted
技术标签:
【中文标题】MongoDB 错误:通过 JSON 文件以 ISO 格式将日期插入 MongoDB【英文标题】:MongoDB error: Insert date into MongoDB in ISO format through JSON file 【发布时间】:2022-01-17 01:18:22 【问题描述】:我尝试通过 JSON 文件将日期字段加载到 MongoDB,但由于写入错误而出现错误:
BulkWriteErrorindex=0,code-52,message='doller($)前缀字段 'ExpirationDate.$date' 中的 '$date' 对存储无效。'
尝试了以下方法,都没有奏效:
"ExpirartionDate":
"$date":"2020-07-07"
"ExpirartionDate":ISODate("2020-0-07")
"ExpirartionDate":ISODate("2020-0-07")
请告知正确的格式以通过 JSON 文件将日期作为 ISO 日期插入 MongoDB。
【问题讨论】:
月和日必须分别为 2 位数字:ExpirartionDate: ISODate("2020-07-07")
【参考方案1】:
来自官方documentation:
对于 1970 年到 9999 年之间的日期,包括:
"$date": "$numberLong": "<millis>"
"$date": "<ISO-8601 Date/Time Format>"
对于 1970 年之前或 9999 年之后的日期:
"$date": "$numberLong": "<millis>"
其中值如下:
"<millis>"
- A 64-bit signed integer as string. The value represents milliseconds relative to the epoch.
"<ISO-8601 Date/Time Format>"
- A date in [ISO-8601 Internet Date/Time Format](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) as string.
- The date/time has a maximum time precision of milliseconds:
- Fractional seconds have exactly 3 decimal places if the fractional part is non-zero.
- Otherwise, fractional seconds SHOULD be omitted if zero.
ISO 8601 日期的“时间”部分是可选的。 所以你的第一次尝试会成功,我刚刚确认了这一点。
您的 json 应该如下所示:
[
"ExpirationDate": "$date": "2020-07-07"
]
【讨论】:
我可以手动将文档插入到 Mongo 中,但是当我尝试使用 Kafka 数据馈送加载时,他们面临上述“$date”问题 我试过没有 $ 符号的日期,它被存储为字符串。我只想以日期格式保存日期,我已经尝试过 $date 和 ISODate ,两者都不起作用。有没有其他方法可以发送提交的日期? 您的问题似乎不在于格式和导入,而在于您的管道?你是如何准确导入 json 的? 我会发送 json 文档到 Kafka 主题,kafka 会将 json 加载到 MongoDB mongodb.com/blog/post/… 根据上面的链接,我们似乎无法在 json 文档中做任何事情,我必须在 kafka 中定义输出模式,以便在加载到 Mongodb 之前将日期归档为日期,我该如何定义输出模式?我的理解对吗?以上是关于MongoDB 错误:通过 JSON 文件以 ISO 格式将日期插入 MongoDB的主要内容,如果未能解决你的问题,请参考以下文章
ios - Heroku 和 MongoDb 上的自定义解析服务器错误 3080:JSON 文本没有以数组或对象开头,并且允许未设置片段的选项
Failed: error processing document #281: unexpected EOF,往MongoDB当中插入json文件时出现的错误。
尝试将 json 导入 mongodb 云集合时出现语法错误
[MongoDB]虽然查询不包含$literal,但错误信息显示$literal is not supported
使用spring boot MongoTemplate删除mongodb记录会抛出错误:“Second is Null”