java - 如何在mongodb中动态添加现有嵌套文档中的文档

标签 java mongodb

我有以下结构

{
  "name": "abc",
  "lname": "xyz",
  "data": {
    "1": {
      "info": {
        "test": "test"
      },
      "info1": {
        "test": "test"
      }
    }
  }
}

现在我想在“数据”对象中添加以下对象

 "2": {
      "info": {
        "test": "test1"
      },
      "info1": {
        "test": "test1"
      }
    }

如何使用 mongodb java 驱动程序在 mongodb 中执行此操作?

最佳答案

在 MongoDB shell 中,您可以执行以下操作:

db.collection.update( {_id:id} , { $set: { "data.2": 
  {
 "info": {"test": "test1" }, "info1": {"test": "test1"}
  } 
}});

在 Java 驱动程序中:

DBObject query = new BasicDBObject("_id", "123"); 
DBObject update = new BasicDBObject(); 
DBObject info = new BasicDBObject("test","test1");
update.put("$set", new BasicDBObject("data.2",
new BasicDBObject("info",info).append("info1",info)); 

collection.update(query, update);

关于java - 如何在mongodb中动态添加现有嵌套文档中的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31422802/

相关文章:

node.js - 我无法将数组插入 Mongoose 模式

arrays - 将数据推送到嵌套数组nodeJs、MongoDB中

ruby-on-rails - 如何在 Mongoid 中查询多个 id?

mongodb - 使用golang从mongodb集合中获取特定的键值对

node.js - 解构mongodb查询结果返回的对象

java - 实现游戏播放的最佳方式?

java - 为什么在 Java 中解析 double 创建新数字?

java - 如何在 android 中再次打开 arraylist 时显示预选复选框

java - Tapestry 错误 : #does not contain a public constructor needed to autobuild

JAVA -> EXE 包在 Windows Server 2008 中无法运行,为什么?