Comment puis-je partiellement mise à jour d'un objet dans MongoDB, de sorte que le nouvel objet de superposition ou de fusionner avec l'existant

Compte tenu de ce document enregistré dans MongoDB

{
   _id : ...,
   some_key: { 
        param1 : "val1",
        param2 : "val2",
        param3 : "val3"
   }
}

Un objet avec de nouvelles informations sur param2 et param3 du monde extérieur doit être enregistré

var new_info = {
    param2 : "val2_new",
    param3 : "val3_new"
};

Je veux fusionner /la superposition de nouveaux champs sur l'état actuel de l'objet, de sorte que param1 n'a pas supprimé

Faire ce

db.collection.update(  { _id:...} , { $set: { some_key : new_info  } } 

Conduira à MongoDB est en train de faire exactement comme il a été demandé, et définit some_key à cette valeur. pour remplacer l'ancien.

{
   _id : ...,
   some_key: { 
      param2 : "val2_new",
      param3 : "val3_new"
   }
}

Quel est le moyen d'avoir MongoDB mise à jour uniquement les nouveaux champs (sans les énoncer un par un de manière explicite)? pour obtenir ceci:

{
   _id : ...,
   some_key: { 
        param1 : "val1",
        param2 : "val2_new",
        param3 : "val3_new"
   }
}

Je suis en utilisant le client Java, mais aucun exemple sera apprécié

InformationsquelleAutor Eran Medan | 2012-04-24