我使用mongoimport将一些csv数据导入到mongodb中.
它主要是正确创建类型,但有一些实例在需要字符串的地方创建了双打或整数.
我已经尝试了几种技术将这些字段转换为字符串无济于事.
这是我尝试过的:
这对Object类型(type = 3)产生了不希望的改变:
db.temp.find( { 'name' : { $type : 16 } } ).forEach( function (x) {
x.name = new String(x.name); // convert field to string
db.temp.save(x);
});
Run Code Online (Sandbox Code Playgroud)
结果看起来像这样:
> db.temp.findOne({name: {$type:3}})
{
"_id" : ObjectId("541a28ddbf8a2e3ee8439b58"),
"name" : {
"0" : "0",
"1" : ".",
"2" : "2",
"3" : "2"
}
}
Run Code Online (Sandbox Code Playgroud)
这没有产生任何变化:
db.temp.find({name: {$exists:true}}).forEach( function(x) {
x.name = "" + x.name;
});
Run Code Online (Sandbox Code Playgroud)
这没有产生任何变化:
db.temp.find({name: {$exists:true}}).forEach( function(x) {
x.name = x.name + "";
});
Run Code Online (Sandbox Code Playgroud)
这没有产生任何变化:
db.temp.find({name: {$exists:true}}).forEach( function(x) {
x.name = "" + x.name + "";
});
Run Code Online (Sandbox Code Playgroud)
这没有产生任何变化:
db.temp.find({name: {$exists:true}}).forEach( function(x) {
x.name = x.name.toString();
});
Run Code Online (Sandbox Code Playgroud)
这产生了一个错误:TypeError:Object 0.22没有方法'toNumber'
db.temp.find({name: {$exists:true}}).forEach( function(x) {
x.name = x.name.toNumber().toString();
});
Run Code Online (Sandbox Code Playgroud)
yao*_*ing 13
如果要存储转换的数据,则需要update文档,否则更改的文档将转到no.
db.temp.find({name: {$exists:true}}).forEach( function(x) {
db.temp.update({_id: x._id}, {$set: {name: x.name.toString()}});
});
Run Code Online (Sandbox Code Playgroud)
至于toNumber问题,它不是内置函数.您可能想要使用parseInt或parseFloat代替:
parseInt("1000"); // output: 1000
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21709 次 |
| 最近记录: |