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"] } } }
)