我需要使用一些表达式来更新字段。给定一个 DBObject 查询
,我如何将给定字段乘以或除以参数 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
等表达式更新现有值?
最佳答案
目前,MongoDB 不允许您根据字段的现有值更新字段的值。这意味着,您不能执行以下 SQL:
UPDATE foo SET field1 = field1 / 2;
在 MongoDB 中,您需要在您的应用程序中执行此操作,但请注意,这不再是一个原子操作,因为您需要读取然后写入。
关于java - mongodb:java:如何使用具有现有值的表达式更新 MongoDB 中的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17439778/