2013-03-12 10 views
14

voglio creare il seguente schema di documento MongoDB utilizzando il driver JavaCome aggiungere una matrice a un documento MongoDB usando Java?

{ 
    "_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 
      ] 
     } 
     ] 
    } 
    ] 
} 

Ho il seguente codice

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

Ma questo non sta generando traguardo come un array. Come posso aggiungere milestone come array? Io attualmente ottenere questo usando il mio codice

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

risposta

34

Cambia per qualcosa di simile:

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

grandi opere. Grazie per la risposta veloce – user2162796

+0

Sì, questo funziona e dovrebbe essere contrassegnato come la risposta per chiudere la domanda. –

+0

Grazie @orid !! – jjmartinez

3

È possibile creare un ArrayList che prende in DBObjects.

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

Aggiungere il DBObject creato per l'oggetto all'interno della matrice e aggiungerlo all'oggetto di matrice creato.

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

Infine, mettere la matrice nell'oggetto documento principale.

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

Migliore utilizzo:

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(); 
Problemi correlati