Étant donné ce document enregistré dans MongoDB
{
_id : ...,
some_key: {
param1 : "val1",
param2 : "val2",
param3 : "val3"
}
}
Un objet contenant de nouvelles informations sur param2
y param3
du monde extérieur doit être sauvé
var new_info = {
param2 : "val2_new",
param3 : "val3_new"
};
Je veux fusionner / superposer les nouveaux champs sur l'état existant de l'objet afin que le paramètre 1 ne soit pas supprimé.
Faire cela
db.collection.update( { _id:...} , { $set: { some_key : new_info } }
MongoDB fait exactement ce qu'on lui a demandé, et définit some_key à cette valeur. en remplaçant l'ancienne.
{
_id : ...,
some_key: {
param2 : "val2_new",
param3 : "val3_new"
}
}
Quel est le moyen de faire en sorte que MongoDB mette à jour uniquement les nouveaux champs (sans les déclarer un par un explicitement) ? pour obtenir ceci :
{
_id : ...,
some_key: {
param1 : "val1",
param2 : "val2_new",
param3 : "val3_new"
}
}
J'utilise le client Java, mais tout exemple sera apprécié.