我需要更新 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/