MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

MongoDB :mise à jour de documents à l'aide des données du même document

Mise à jour : Si tout ce que vous avez à faire est de modifier la structure d'un document sans modifier les valeurs, consultez la réponse de gipset pour une solution intéressante.

Selon un commentaire (maintenant indisponible) sur la page de documentation de mise à jour, vous ne pouvez pas référencer les propriétés du document actuel à partir d'un update() .

Vous devrez parcourir tous les documents et les mettre à jour comme ceci :

db.events.find().snapshot().forEach(
  function (e) {
    // update document, using its own properties
    e.coords = { lat: e.lat, lon: e.lon };

    // remove old properties
    delete e.lat;
    delete e.lon;

    // save the updated document
    db.events.save(e);
  }
)

Une telle fonction peut également être utilisée dans un travail de réduction de carte ou un db.eval() côté serveur travail, selon vos besoins.