如何将mongodb中的类型从Double或Integer更改为String?

8 浏览
0 Comments

如何将mongodb中的类型从Double或Integer更改为String?

我使用mongoimport将一些CSV数据导入到MongoDB中。\n大部分情况下,它正确地创建了类型,但是有一些实例中创建了Double或Integer类型,而我希望是String类型。\n我尝试了几种方法来将这些字段转换为字符串,但都没有成功。\n以下是我尝试过的方法:\n这个方法将字段转换为了不期望的Object类型(type=3):\n

db.temp.find( { 'name' : { $type : 16 } } ).forEach( function (x) { 
  x.name = new String(x.name); // 将字段转换为字符串
  db.temp.save(x); 
});

\n结果如下所示:\n

> db.temp.findOne({name: {$type:3}})
{
    "_id" : ObjectId("541a28ddbf8a2e3ee8439b58"),
    "name" : {
        "0" : "0",
        "1" : ".",
        "2" : "2",
        "3" : "2"
    }
}

\n这个方法没有产生任何变化:\n

db.temp.find({name: {$exists:true}}).forEach( function(x) {
  x.name = "" + x.name;
});

\n这个方法没有产生任何变化:\n

db.temp.find({name: {$exists:true}}).forEach( function(x) {
  x.name = x.name + "";
});

\n这个方法没有产生任何变化:\n

db.temp.find({name: {$exists:true}}).forEach( function(x) {
  x.name = "" + x.name + "";
});

\n这个方法没有产生任何变化:\n

db.temp.find({name: {$exists:true}}).forEach( function(x) {
  x.name = x.name.toString();
});

\n这个方法产生了一个错误:TypeError: Object 0.22 has no method \'toNumber\'\n

db.temp.find({name: {$exists:true}}).forEach( function(x) {
  x.name = x.name.toNumber().toString();
});

0
0 Comments

如何将 MongoDB 的数据类型从 Double 或 Integer 改为 String?

问题的原因是,用户想要将 MongoDB 中某个字段的数据类型从 Double 或 Integer 改为 String。为了解决这个问题,用户尝试了以下的查询方法,并表示这个方法在 MongoDB 3.4 版本中有效,但在最新版本可能不起作用。

解决方法如下:

db.dbname.find({fieldname: {$exists: true}}).forEach(function(obj) {
    obj.fieldname = "" + obj.fieldname;
    db.dbname.save(obj);
});

以上是一个将字段类型从 Int 或 Double 转为 String 的查询方法。用户可以将 `dbname` 替换为实际的数据库名称,将 `fieldname` 替换为实际的字段名称。通过遍历符合条件的文档,并将字段的值转为字符串类型,然后再保存文档,可以实现将字段类型转为字符串的目的。

需要注意的是,这个方法在 MongoDB 的最新版本中可能不再有效。用户可以尝试该方法,但如果没有起作用,可能需要寻找其他解决方案或者更新版本的 MongoDB。

0
0 Comments

有时候,在MongoDB中,需要将某个字段的数据类型从Double或Integer转换为String。这可能是因为业务需求的改变或数据处理的需要。在这种情况下,需要进行一些操作来更改字段的数据类型。

首先,需要注意的是,如果想要存储转换后的数据,需要对文档进行更新操作,否则更改后的文档将不会被保存。

下面是一种解决方法的示例代码:

db.temp.find({name: {$exists:true}}).forEach( function(x) {
    db.temp.update({_id: x._id}, {$set: {name: x.name.toString()}});
});

以上代码将遍历集合中的每个文档,如果文档中的name字段存在,则将其转换为字符串类型,并更新相应的文档。

另外,关于toNumber的问题,它不是一个内置函数。可以使用parseInt或parseFloat函数来进行转换:

parseInt("1000");  // 输出: 1000

以上代码将字符串"1000"转换为整数类型。

总之,如果需要将MongoDB中的某个字段的数据类型从Double或Integer转换为String,可以使用update操作来更新文档,并使用toString函数将字段转换为字符串类型。另外,如果需要将字符串转换为整数类型,可以使用parseInt函数。

0