我需要使用某个表达式更新字段。给定DBObject query
,如何通过参数value
对给定字段进行乘法或除法?
如何编写一个执行类似操作的函数,但在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
等表达式更新现有值?
答案 0 :(得分:1)
目前,MongoDB不允许您根据字段的现有值更新字段的值。这意味着,您无法执行以下SQL:
UPDATE foo SET field1 = field1 / 2;
在MongoDB中,您需要在应用程序中执行此操作,但请注意,这不再是原子操作,因为您需要读取然后再写入。