我已将 CSV 文件导入到我的 mongodb。 CSV 具有 mongo 所需的分隔符,并通过以下查询从 MySQL 数据库接收:SELECT * FROM csgo_users INTO OUTFILE 'b1.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';
此外,我还尝试通过其导出功能从 Sequel Pro 接收 CSV。
在我的 csv 中,我有一个长度为 17 个字符的字段。在 MySQL 数据库中,该字段的类型为 VARCHAR 但包含 17 位数字。
将 csv 导入 mongo 后,我得到了 NumberLong
类型的这个字段,但我希望它是 string
。
到目前为止,我已经尝试过:
varchar
更改为 text
。 --headerline
和 --columnsHaveTypes
--fields
。 db.csgo_users.find({"steam_id": {$type: 18}})
.toArray()
.map(function(v){
v.steam_id = new String(v);
db.csgo_users.save(v)
})
或这个:
db.csgo_users.find({"steam_id": {$type: 18}})
.toArray()
.map(function(v){
v.steam_id = new String(v.toSring());
db.csgo_users.save(v)
})
- 我用
forEach()
尝试了很多解决方案,比如 this 或 this 或 this等等。
对于我尝试的最后一个示例,我得到的不是字符串,而是对象,
{"N",u","m","b","e","r","L","o","n","g"..}
但我希望它是“123456789”,而不是对象。我正在使用 MongoDB 3.4 docs 。
所以,我的问题是,如何将“字段”类型从
NumberLong
更改为 String
? 最佳答案
您可以使用 valueOf() 获取 NumberLong 的值作为 javascript 数值。
将 NumberLong 转换为 Number :
NumberLong('5').valueOf() // 5
然后,您可以在号码上使用easilly
toString()
来获取String值。将 NumberLong 转换为字符串:
NumberLong('5').valueOf().toString() // "5"
关于mysql - MongoDB 类型从 NumberLong 更新为 String,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42564740/