MongoDBtypes从NumberLong更新为String
我已经将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的导出function。
在我的csv中,我有17个字符长的字段。 在MySQL数据库中,该字段的types为VARCHAR,但包含17位数字。
在导入csv到mongo后,我得到了这个types为NumberLong
字段,但我希望它是string
。
我已经尝试到目前为止:
- 将MySQL中的types从
varchar
更改为text
。 - 试图导入CSV附加标志 –
--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) })
– 我已经尝试了很多解决schemeforEach()
像这样或这个或这个等等
对于我尝试的最后一个例子,我没有string,但是Object, {"N",u","m","b","e","r","L","o","n","g"..}
但我希望它是“123456789”,而不是对象。
我正在使用MongoDB 3.4 文档 。
所以,我的问题是,如何将“字段”types从NumberLong
为String
?
您可以使用valueOf()来获取NumberLong的值作为javascript数值。
Casting NumberLong到Number:
NumberLong('5').valueOf() // 5
然后,你可以在你的数字上使用easilly toString()
来获得String值。
铸造NumberLong到string:
NumberLong('5').valueOf().toString() // "5"