在MongoDB中修改数据类型
引言
本文主要讲解Mongodb的类型转换。包括:string转double, string转int, string转Date。
0. 出现类型不一致的原因
ES导入数据到Mongo后,会出现类型统一改为String的问题。
传统关系型数据库,在设计表处,右键就可以完成修改表类型。
但是非关系型数据库,没有这种实现。只有通过命令行操作实现。
验证表明,可以通过如下的接口进行修改。
1、Mongodb类型转换接口
//string转为double类型
db.law.find().forEach( function (x) {
x.state = parseInt(x.state);
db.law.save(x);
});
//string转为int类型
db.law.find().forEach( function (x) {
x.ise= NumberInt (x.ise);
db.law.save(x);
});
//string转化为date类型
db.law.find().forEach( function (x) {
x.eift = new ISODate(x.eift);
db.law.save(x);
});
2、类型转换一键脚本实现
[root@Node-C6 mongo_process]# cat ./mongo_uopdate.sh
#!/bin/sh
mongo data <<\EOF
db.law.find().forEach( function (x) {
x.state = parseInt(x.state);
x.id= NumberInt(x.id);
x.eift = new ISODate(x.eift);
x.ctime = new ISODate(x.ctime );
x.pt= new ISODate(x.pt);
db.law.save(x);
});
EOF
3、执行成功标记
[root@Node-C6 mongo_process]# ./mongo_uopdate.sh
MongoDB shell version: 3.2.7
connecting to: data
bye
参考:
https://glassonionblog.wordpress.com/2014/05/15/mongodb-changing-column-names-and-column-types/