2017-03-02 64 views
2

我已经将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
到目前为止,我已经尝试:MongoDB类型从NumberLong更新到字符串

  • 更改类型在MySQL从varchartext
  • 试图导入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) 
    }) 


- 我已经尝试了很多解决方案与forEach()thisthisthis 等。


对于我尝试的最后一个示例,我没有字符串,但Object,{"N",u","m","b","e","r","L","o","n","g"..}但我希望它是“123456789”,而不是Object。
我正在使用MongoDB 3.4 docs
所以,我的问题是,如何将“字段”类型从NumberLong更改为String

回答

4

您可以使用valueOf()获取NumberLong的值作为javascript数值。

铸造NumberLong到号码:

NumberLong('5').valueOf() // 5 

然后,你就可以用你的号码easilly toString()得到的字符串值。

铸造NumberLong为String:

NumberLong('5').valueOf().toString() // "5" 
+0

能否请你告诉我蒙戈外壳查询的例子,我可以用'.valueOf()'?因为我想选择'$ type:18'为'NumberLong'的字段所在的字段,然后用'.toString()'替换为相同的值。 – Grynets

+0

我有这个,只是改变我的代码.valueOf()。非常感谢! – Grynets