java - 使用 Java 更新 Mongodb

标签 java mongodb

我需要更新 MONGO DB 的帮助。这是我的文档:

Functions : {
    "cgi0-app" : { 
        "calculatedConfigValues" : { 
            "floor" : 0.0 , 
            "ceiling" : 49.0 , 
            "calculatedBrokenValue" : 2.033 }, 
        "userConfigValues" : null }, 
    "shop-app" : { 
        "calculatedConfigValues" : { 
            "floor" : 0.0 , 
            "ceiling" : 70.0 , 
            "calculatedBrokenValue" : 2.413 } } }

我正在尝试将 MongoDB 中的 shop-app 的“ceiling”值从 70 更新为 100,但没有成功。这是我的代码:

BasicDBObject find = new BasicDBObject("Functions.shop app.calculatedConfigValues.floor",0);

BasicDBObject set = new BasicDBObject("$set", new BasicDBObject("Functions.shop-        app.calculatedConfigValues.$.ceiling", 100);

getDB().update(find, set);

有人可以帮我解决我做错的事情吗?

最佳答案

您无法真正使用该点表示法创建 DBObject。您必须为文档树中的每个级别嵌套新的 BasicDBObjects。

DBObject toFind = new BasicDBObject("Functions", 
    new BasicDBObject("show-app", 
        new BasicDBObject("calculatedConfigValues", 
            new BasicDBObject("floor", 0))));

更新对象也是如此

DBObject update = new BasicDBObject("$set",
    new BasicDBObject("Functions", 
        new BasicDBObject("show-app", 
            new BasicDBObject("calculatedConfigValues",
                new BasicDBObject("ceiling", 100)))))

或者,您可以使用this用于将 json 字符串转换为 DBObject 结构的帮助器类,如下所示。

DBObject toFind = (DBObject) JSON.parse(
    "{'Functions.show-app.calculatedConfigValues.floor':0}"
);

但请注意,使用 JSON 类可能会导致性能问题。手动构建 DBObject 速度更快。

关于java - 使用 Java 更新 Mongodb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16248064/

相关文章:

node.js - 使用 mongoose 更新 mongodb 记录中的数组

node.js - "How to get ' 父级到子级 ' relation with mongodb aggregation"

mongodb - GridFS 和原子更新

java - 从 JPanel 获取高分辨率图像

java - 当标识符名称中有空格时如何使用 GSON 进行解析

java - UTF-8 编码;只有一些日语字符没有被转换

php - 新的 PHP 驱动程序 1.2.3 与 laravel 4.2 上的 MongoDB 3.4 不兼容

javascript - 当我的 Mongoose DB 模式之一的实例被放置在第二个模式中时,为什么它可能是 "cast to undefined"?

java - 读取 UTF-8 文件并写入纯 ANSI?

Java:复制非原始类型的数组