MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como atualizo campos de documentos no mongo db usando o driver java?


Gostaria de saber se o driver é inteligente o suficiente para atualizar apenas o menor subconjunto de alterações ou se está apenas atualizando cegamente a coisa toda?

Não, se você usar o método de atualização "normal", todo o objeto será enviado pela rede. Suspeito que o próprio servidor de banco de dados será inteligente o suficiente para atualizar apenas os índices necessários (e não os que não foram alterados), se possível (ou seja, o objeto pode ser atualizado no local e não precisa ser movido porque cresceu muito)

O que você pode fazer é usar as funções "modificador de atualização atômica". A documentação Java é um pouco leve sobre eles, mas como o driver apenas transmite o JSON, o material dos tutoriais não Java deve funcionar, por exemplo:
shapes.update((DBObject)JSON.parse(    "{ 'foo' : 'bar'}"),  
    (DBObject) JSON.parse(          "{ '$set' : { 'foo': 'bat'}}")   );