MongoDB将字符串转换为数组

4

我是一名MongoDB的初学者,在将数据导入数据库时遇到了一些困难。现在我有一个文档集合,看起来像这样:

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

答案现在被存储为单个字符串。然而,我想将其转换为以下列表形式,以便在查询时展开它。
  {
    "_id" : ObjectId("124"),
    "Answers" : ["502","784","1060"],
    } 

有什么想法如何做到这一点?谢谢。
3个回答

6
您可以使用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' ]

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); 
});

没有必要删除括号文字,按照@RayToal的建议,在当前“Answers”值上使用JSON.parse。请使用以下代码: db.Question.find({}).snapshot().forEach(function (el) { el.Answers = JSON.parse(el.Answers); db.Question.save(el); }); - chridam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接