2013-07-03 2 views
2

Мне нужно обновить поле, используя некоторое выражение. Учитывая DBObject query, как я могу умножить или разделить заданное поле на аргумент value?mongodb: java: Как обновить поле в MongoDB, используя выражение с существующим значением

Как я могу написать функцию выполнения операции что-то вроде этого, но в Java:

function(DBObject queryObject, String fieldToUpdate, Double argumentValue) { 
    collection.find(queryObject).forEach(function(e) { 
     // update field given by input argument "fieldToUpdate", something like.. 
     // e.put(fieldToUpdate, e.get(fieldToUpdate)/argumentValue); ?? 
     collection.save(e); 
    }); 
} 

Можно ли с помощью "$set" и find() или findAndModify()? Если да, как можно обновить существующее значение с помощью выражения типа existingValue/argumentValue?

ответ

1

В настоящий момент MongoDB не позволяет вам обновлять значение поля в соответствии с существующим значением поля. Это значит, вы не можете сделать следующий SQL:

UPDATE foo SET field1 = field1/2; 

В MongoDB, вам нужно будет сделать это в вашем приложении, но быть в курсе, что это уже не является атомарной операцией, как вам нужно прочитать, а затем написать.