Как добавить массив в документ 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"
  }
}

person user2162796    schedule 12.03.2013    source источник


Ответы (4)


Измените на что-то вроде этого:

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);
person Ori Dar    schedule 12.03.2013

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

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

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

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

Наконец, поместите массив в основной объект документа.

document.put("milestones", array);
person vjrocks5503    schedule 19.06.2015

Лучше использовать:

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();
person Shiv Krishna Jaiswal    schedule 10.06.2017

Небольшое продолжение предыдущего ответа

    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);
person Devraj Giri    schedule 16.10.2018