3

我需要使用一些表达式来更新一个字段。给定 a 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"and find()or findAndModify()?如果是,如何使用类似的表达式更新现有值existingValue / argumentValue

4

1 回答 1

1

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

UPDATE foo SET field1 = field1 / 2;

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

于 2013-07-03T08:33:16.327 回答