【问题标题】:How to add an array to a MongoDB document using Java?如何使用 Java 将数组添加到 MongoDB 文档?
【发布时间】:2013-03-12 20:48:58
【问题描述】:

我想使用 java 驱动程序在 mongoDB 中创建以下文档模式

{
  "_id": {
    "$oid": "513e9820c5d0d8b93228d7e8"
  },
  "suitename": "testsuite_name",
  "testname": "testcase_name",
  "milestones": [
    {
      "milestone_id": "359",
      "testplans": [
        {
          "pland_id": "965",
          "runs": [
            6985,
            5896
          ]
        },
        {
          "plan_id": "984",
          "runs": [
            9856,
            3684
          ]
        }
      ]
    }
  ]
}

我有以下代码

BasicDBObject testObject = new BasicDBObject();
BasicDBObject milestoneObject = new BasicDBObject();

testObject.put("suitename", testsuite);
testObject.put("testname", testcase);
testObject.put("milestones", new BasicDBObject("milestone_id", "2333"));
locations.insert(testObject);

但这不会以数组的形式生成里程碑。如何将里程碑添加为数组?我目前使用我的代码得到这个

{
  "_id": {
    "$oid": "513f93dac5d0e2439d34308e"
  },
  "suitename": "test_deployment_disable_client.TestDeploymentDisableClient",
  "testname": "test_deployment_disable_client",
  "milestones": {
    "milestone_id": "2333"
  }
}

【问题讨论】:

    标签: mongodb mongodb-java


    【解决方案1】:

    改成这样:

    testObject.put("suitename", testsuite);
    testObject.put("testname", testcase);         
    List<BasicDBObject> milestones = new ArrayList<>();
    milestones.add(new BasicDBObject("milestone_id", "2333"));
    testObject.put("milestones", milestones);
    locations.insert(testObject);
    

    【讨论】:

      【解决方案2】:

      您可以创建一个接收 DBObjects 的 ArrayList。

      List<DBObject> array = new ArrayList<DBObject>();
      

      为数组内的对象添加创建的DBObject,并添加到创建的数组对象中。

      array.add(/* some object */);
      

      最后,将数组放入主文档对象中。

      document.put("milestones", array);
      

      【讨论】:

        【解决方案3】:

        更好的使用:

        MongoClient client = new MongoClient("localhost",27017);
        
        MongoCollection<Document> collection =        client.getDatabase("db").getCollection("collection");
        
        List<Document> docs=new ArrayList<>();
        docs.add();
        
        collection.insertMany(docs);
        
        client.close();
        

        【讨论】:

          【解决方案4】:

          很少延伸到以前的答案

              BasicDBObject testObject = new BasicDBObject();
              testObject.put("type", "milestones");
              testObject.put("usecase", "milestone_type");
          
              List<BasicDBObject> testplans = new ArrayList<>();
              testplans.add(new BasicDBObject("plan_id","3232"));
              testplans.add(new BasicDBObject("plan_day","sunday"));
          
          
              BasicDBObject milestoneObject = new BasicDBObject();
              milestoneObject.put("milestone_id", "3232");
              milestoneObject.put("plans", testplans);
          
          
              List<BasicDBObject> milestones = new ArrayList<>();
              milestones.add( milestoneObject);
              testObject.put("milestones", milestones);
          
          
              locations.insert(testObject);
          

          【讨论】:

            猜你喜欢
            • 2014-07-29
            • 2021-06-17
            • 2017-09-16
            • 1970-01-01
            • 2022-01-18
            • 2021-03-09
            • 2012-09-28
            • 2023-01-09
            • 2016-10-16
            相关资源
            最近更新 更多