我已将 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
到目前为止,我已经尝试过:

  • 将 MySQL 中的类型从 varchar 更改为 text
  • 尝试使用附加标志 --headerline--columnsHaveTypes
  • 导入 csv
  • 另外,我尝试添加没有顶行的单独字段,带有标签 --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
    等等。

    对于我尝试的最后一个示例,我得到的不是字符串,而是对象,{"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/

    10-08 20:46