【问题标题】:MongoDB Convert String to ArrayMongoDB 将字符串转换为数组
【发布时间】:2017-10-06 07:54:19
【问题描述】:

我是 MongoDB 的新手,在将数据导入数据库时​​遇到了一些困难。现在我有一个看起来像

的文档集合
db.Question.findOne()
{
"_id" : ObjectId("124"),
"Answers" : "[\"502\",\"784\",\"1060\"]",
}

答案现在存储为单个字符串。但是,我想将其转换为如下列表,以便在查询时将其展开。

  {
    "_id" : ObjectId("124"),
    "Answers" : ["502","784","1060"],
    } 

知道怎么做吗?谢谢。

【问题讨论】:

    标签: arrays mongodb type-conversion


    【解决方案1】:

    首先删除数据中的“[”和“]”,然后使用下面的代码,它创建一个新属性,answers,这是一个包含单个数字的数组/列表:

    db.Question.find({}).snapshot().forEach(function (el) {
        el.answers=el.Answers.substring(1,el.Answers.length-1);     
        el.answers = el.Answers.split(',');  
             db.Question.save(el); 
    });
    

    【讨论】:

    • 无需删除括号文字,在当前Answers 值上使用JSON.parse,正如@RayToal 在db.Question.find({}).snapshot().forEach(function (el) { el.Answers = JSON.parse(el.Answers); db.Question.save(el); }); 下方所建议的那样
    【解决方案2】:

    您可以使用 JSON.parse() 将字符串类型更改为列表,然后使用更新元素保存集合。下面是一个例子:

    db.Question.find({}).snapshot().forEach(function (el){el.Answers=JSON.parse(el.Answers);db.Question.save(el)});
    

    【讨论】:

      【解决方案3】:

      您只需将JSON.parse 应用于以下每个字符串:

      > JSON.parse("[\"502\",\"784\",\"1060\"]")
      [ '502', '784', '1060' ]
      

      【讨论】:

        猜你喜欢
        • 2014-10-30
        • 2022-01-23
        • 2022-01-14
        • 2015-06-12
        • 2017-11-27
        • 1970-01-01
        • 2011-08-21
        相关资源
        最近更新 更多