2013-03-12 3 views
14

Я хочу создать следующий документ схемы в MongoDB с помощью драйвера JavaКак добавить массив в документ MongoDB с помощью 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 
      ] 
     } 
     ] 
    } 
    ] 
} 

У меня есть следующий код

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" 
    } 
} 

ответ

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

+0

Да, это работает, и это должно быть отмечено как ответ, чтобы закрыть вопрос. –

+0

Спасибо @orid !! – jjmartinez

3

Вы можете создать ArrayList, который принимает в DBObjects.

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

Добавить созданный объект DBO для объекта внутри массива и добавить его к созданному объекту массива.

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(); 
Смежные вопросы