mongodb:java:如何使用具有现有值的表达式更新MongoDB中的字段

时间:2013-07-03 04:39:08

标签: java mongodb mongodb-java mongodb-update

我需要使用某个表达式更新字段。给定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等表达式更新现有值?

1 个答案:

答案 0 :(得分:1)

目前,MongoDB不允许您根据字段的现有值更新字段的值。这意味着,您无法执行以下SQL:

UPDATE foo SET field1 = field1 / 2;

在MongoDB中,您需要在应用程序中执行此操作,但请注意,这不再是原子操作,因为您需要读取然后再写入。