Je travaille donc actuellement sur un projet avec mongodb et nodejs et je me demandais comment mettre à jour des données dans mongodb via nodejs? Mon problème est que je veux conserver les anciennes données et en ajouter de nouvelles. Par exemple, voici les données actuellement dans mon mongodb

{
    "_id" : ObjectId("5a1c0c1c3b147ec2e31cceb3"), 
    "event_id" : "1", 
    "event_medium" : "null", 
    "event_tags" : ["#JustTesting"]
}

Je souhaite donc ajouter de nouvelles données au tableau event_tags tout en conservant les anciennes données.

Ainsi, par exemple, le résultat final serait le suivant:

{
    "_id" : ObjectId("5a1c0c1c3b147ec2e31cceb3"), 
    "event_id" : "1",
    "event_medium" : "null", 
    "event_tags" : ["#JustTesting", "#Test", "#Something"]
}
0
Eric 28 nov. 2017 à 14:41

3 réponses

Meilleure réponse

Vous devez utiliser la fonction de mise à jour de MongoDB pour cela. MongoDB connaît différents opérateurs de mise à jour, dans votre cas, vous pouvez utiliser {{X0 }} ou $pushAll (le second est obsolète):

Mettre à jour les uns après les autres avec $push

YourCollection.update({ _id: 'xxx' }, { $push: { event_tags: '#Test' } });
YourCollection.update({ _id: 'xxx' }, { $push: { event_tags: '#Something' } });

Ou les deux à la fois avec $pushAll (obsolète maintenant)

YourCollection.update({ _id: 'xxx' }, { $pushAll: { event_tags: ['#Test', '#Something'] } });

Pour interagir avec MongoDB depuis votre application NodeJS, j'utiliserais une bibliothèque comme celle-ci.

0
wavto 28 nov. 2017 à 12:02

Je suppose que vous utilisez la mangouste.

    eventModel.findOne({event_id:1 },
        function(err, eventObj){
        if(err){
          //handle error
        } else { 
          if(eventObj === null) {
            //event doesnot exist       
          }
          var tagList = eventObj.event_tags; 
          tagList.push('new_tag1');
          tagList.push('new_tag2');
          eventObj.event_tags = tagList;
          eventObj.save(function(err){
            if(err){
              //handle error
            } else {
              //success
            }
          })
0
Sreeragh A R 28 nov. 2017 à 12:05

Votre point de départ est la fonction de mise à jour dans les opérations CRUD (Créer, Lire, Mettre à jour, Supprimer) dans Mongodb.

Votre programme de nœud doit avoir entre autres la fonction de mise à jour où vous définissez le champ _id que vous souhaitez mettre à jour et chargez les champs de contenu à mettre à jour dans 'data' par exemple comme ci-dessous:

myModel.prototype.update = function (_id, data, callback) {
    const query = { _id: this.mongo.ObjectId(_id) };
    debug(' update:' + JSON.stringify(query));
    this.mongo.collection('mycollection').update(query, data, callback);
};

Ce morceau de code doit être placé dans votre modèle, si vous utilisez le modèle MVC.

Il y a beaucoup à faire. Honnêtement, je recommande un tutoriel plus approfondi comme les parties 3 et 4 de celui-ci pour nodejs et Mongoose (pilote mongo db): Tutoriel MDN pour mongo / node / express

0
dpetrini 28 nov. 2017 à 11:54
47530707