MongoDB Compass导入CSV:Unix时间戳`t`与`i`反转问题求助
解决MongoDB Compass导入Unix时间戳字段存储异常的问题
换用Date类型导入:MongoDB的
Timestamp类型本身就是t(时间戳秒数)+i(自增计数器)的复合结构,你要的单字段时间格式应该是Date类型。导入时把该字段的类型标记为Date,Compass会自动将Unix时间戳转成标准ISODate格式,直接存为单个字段,不会拆分出子字段。导入后用聚合修正数据:如果已经导入完成,执行以下命令把
i字段的值转成标准Date字段:db.yourCollection.updateMany( {}, [ { $set: { targetField: { $toDate: { $multiply: ["$targetField.i", 1000] } } } } ] )替换
yourCollection为你的集合名,targetField为对应的时间戳字段名。预处理CSV再导入:如果一定要用
Timestamp类型且让t字段存时间戳,先把CSV里的Unix时间戳乘以1000(转成毫秒级),导入时标记为Timestamp类型,Compass会把毫秒值存入t字段,i字段自动填0。
内容的提问来源于stack exchange,提问作者Malvina Papadaki
相关产品推荐
相关产品推荐

