2013-03-12 85 views
14

我想用Java驱动程序如何使用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); 

创建MongoDB中以下文档架构但这不是产生里程碑作为数组。我如何将里程碑添加为数组?我目前得到这个用我的代码

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

回答

34

更改为这样的事情:

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); 
+0

的伟大工程。感谢您的快速响应 – user2162796 2013-03-12 21:22:50

+0

是的,这是有效的,它应该被标记为解决问题的答案。 – 2013-07-23 21:15:25

+0

谢谢@orid !! – jjmartinez 2014-05-12 14:50:52

3

您可以创建一个ArrayList这需要在DBObjects。

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

添加创建DBOBJECT用于阵列内的对象,并把它添加到所创建的阵列对象。

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

最后,把数组放在主文档对象中。

document.put("milestones", array); 
0

更好地利用:

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(); 
相关问题