2017-10-06 1 views
0

Je suis très nouveau sur MongoDB et j'ai de la difficulté à importer des données dans la base de données. Maintenant, j'ai une collection de documents qui ressemble àMongoDB Convertir une chaîne en tableau

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

Les réponses sont maintenant stockées comme une seule chaîne. Cependant, je veux le convertir en une liste comme ci-dessous afin que je puisse le décompresser lors de la requête.

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

Une idée de comment faire? Merci.

Répondre

1

Il vous suffit d'appliquer JSON.parse à chacune de ces chaînes:

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

d'abord supprimer « [ » et « ] » dans les données, puis utilisez ci-dessous le code, ce qui crée un nouvel attribut, des réponses qui est un tableau/liste qui contient des numéros individuels:

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

Pas besoin de supprimer les crochets littéraux, utilisez '' JSON.parse' sur la Answers' valeur actuelle comme suggéré par @RayToal ci-dessous 'db.Question.find ({}). snapshot(). pourChaque (fonction (el) { el.Answers = JSON.parse (el.Answers); db.Question.save (el); }); – chridam