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

标签 java mongodb mongodb-java mongodb-update

我需要使用一些表达式来更新字段。给定一个 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/

相关文章:

Java 8 流收集集

java - 奇怪的日期格式转Java日期

java - Mongo - 我无法使用 java-mongo 3.5 驱动程序保存 Pojo(如果它包含 Map<String,Object> 或 Document 字段)

java - 如何使用 Java mongodb 驱动程序中的 "_id"字段查询文档?

java - Java 8 默认接口(interface)中 `this` 的静态类型是什么?

java-如何创建延迟一定时间的字符串检查?

mongodb - 从终端运行 mongo index 命令,解决超大索引的问题

node.js - Mongoose throwing 在使用变量代替显式字符串时,必须指定字段错误

java - mongodb JavaScript 查询

java - gwt + mongo (吗啡) = IncompleteClassChangeError