J'ai beaucoup de documents comme le suivant stockés dans la base de données mongo.
{ "posts": [ { "_id": "5ee38b041385d900004e78de", "postName": "Driver one", "hasSublevels": false, "isChildOfOther": false, regions: [] }, { "_id": "5ee38b0e1385d900004e78df", "postName": "Driver 2", "hasSublevels": true, "isChildOfOther": false, regions: [] }, { "_id": "5ee38b1b1385d900004e78e0", "postName": "Driver 3", "hasSublevels": true, "isChildOfOther": true, regions: [] }, { "_id": "5ee38b281385d900004e78e1", "postName": "Driver 4", "hasSublevels": true, "isChildOfOther": true, regions: [] }, { "_id": "5ee38b3a1385d900004e78e2", "postName": "Driver 5", "hasSublevels": true, "isChildOfOther": false, regions: [] }, { "_id": "5ee38b461385d900004e78e3", "postName": "Driver 6", "hasSublevels": true, "isChildOfOther": true, regions: [] } ], "_id": "5ee38b499bd40260ad591d7e", "name": "Cabs NY", "date": "2020-06-12T14:03:53.343Z", "__v": 0 },
Chaque article a un tableau de régions comme indiqué ci-dessus. Je voudrais ajouter des valeurs au champ de région à l'intérieur du tableau de messages. Comment faire une demande qui récupère d'abord un document particulier par identifiant? Deuxièmement, me permet-il d'ajouter une ou plusieurs valeurs au tableau des régions dans un objet de publication particulier?
3 Réponses :
Ce code pour la première partie, la deuxième partie, vous pouvez utiliser id.regions puis y insérer les données comme je l'ai fait.
result ={ "posts": [ { "_id": "5ee38b041385d900004e78de", "postName": "Driver one", "hasSublevels": false, "isChildOfOther": false, regions: [] }, { "_id": "5ee38b0e1385d900004e78df", "postName": "Driver 2", "hasSublevels": true, "isChildOfOther": false, regions: [] }, { "_id": "5ee38b1b1385d900004e78e0", "postName": "Driver 3", "hasSublevels": true, "isChildOfOther": true, regions: [] }, { "_id": "5ee38b281385d900004e78e1", "postName": "Driver 4", "hasSublevels": true, "isChildOfOther": true, regions: [] }, { "_id": "5ee38b3a1385d900004e78e2", "postName": "Driver 5", "hasSublevels": true, "isChildOfOther": false, regions: [] }, { "_id": "5ee38b461385d900004e78e3", "postName": "Driver 6", "hasSublevels": true, "isChildOfOther": true, regions: [] } ] } results = result.posts; groups = {}; for (var i in results) { var groupName = results[i]._id; if (!groups[results[i]._id]) { groups[groupName] = []; } groups[groupName].push({"regions" :results[i].regions}); } console.log(groups);
post.save()
C'était presque la solution à mon problème. Cependant, post.save () avec une requête put ne conserve pas les données dans la base de données, quel pourrait être le problème? Voici l'essentiel de la même chose: gist.github.com/Sanqqara/687dc0c1767e9d93efcc8c32
J'ai enfin pu le faire fonctionner, merci beaucoup.
Selon la documentation MongoDB https://docs.mongodb.com / manual / reference / operator / update / push / vous pouvez utiliser l'opérateur $ push pour ajouter une valeur à un tableau un peu comme l'exemple d'Alpha.
Cela ressemblerait à
db.posts.update( { _id: "5ee38b281385d900004e78e1" }, { $push: { regions: { $each: ["West", "East", "South"] } } } )