1
votes

Faire une demande de publication / mise à un objet dans un tableau

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?


0 commentaires

3 Réponses :


0
votes

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


0 commentaires

0
votes
post.save()

2 commentaires

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.



0
votes

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


0 commentaires