Dado este documento salvo no MongoDB
{
_id : ...,
some_key: {
param1 : "val1",
param2 : "val2",
param3 : "val3"
}
}
Um objeto com novas informações dentro param2
e param3
fora do mundo precisa ser salvo
var new_info = {
param2 : "val2_new",
param3 : "val3_new"
};
Desejo mesclar / sobrepor os novos campos sobre o estado existente do objeto para que o param1 não seja removido
Fazendo isso
db.collection.update( { _id:...} , { $set: { some_key : new_info } }
Isso levará o MongoDB a fazer exatamente o que foi solicitado e define some_key para esse valor. substituindo o antigo.
{
_id : ...,
some_key: {
param2 : "val2_new",
param3 : "val3_new"
}
}
Como é que o MongoDB atualiza apenas novos campos (sem declará-los um por um explicitamente)? para conseguir esta:
{
_id : ...,
some_key: {
param1 : "val1",
param2 : "val2_new",
param3 : "val3_new"
}
}
Estou usando o cliente Java, mas qualquer exemplo será apreciado