如何将mongodb中的类型从Double或Integer更改为String?
如何将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(); });
如何将 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。
有时候,在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函数。