在mysql数据库导出的csv文件里的数据导入到mongodb数据库中,
发现日期数据是String,想要专为mongo的ISODate,方便以后的关于时间的查询。
以users表为例
方法一:少量数据(经验低于1万条)
因为是转化所有数据,如果数据有几十万,极大可能超过执行的时间而中断,导致有的时间转了有的没转。我就遇到这种情况后,继续用第二种方法,将剩下的继续转化
db.users.find({created_time:{$exists:true,$type:2}}).forEach(function(doc){
doc.created_time=new Date(doc.created_time);
db.users.save(doc);
});
方法二:多一点量数据(经验5万条约用时约30秒)
var cursor=db.getCollection('users').find({"created_time":{$exists:true,$type:2}}).limit(50000);
//限制一次5万条,否则也可能要很久而卡死中断
while (cursor.hasNext()) {
var doc = cursor.next();
db.users.update(
{"_id" : doc._id},
{"$set" : {"created_time" : new Date(doc.created_time)}}
)
};