обновить документ в mongoDB с помощью JAVA

Я только начинаю изучать mongoDB с помощью JAVA. У меня есть следующий документ в монго

{
"_id": {
    "$oid": "513fa587c5d0cf174eb9b1f8"
},
"suitename": "test_suite_name",
"testname": "test_name]",
"milestones": [
    {
        "milestone_id": 45
    }
]
}

У меня есть составной ключ для имени набора, имени теста и идентификатора вехи. Мне нужно обработать файл, в котором есть эти три поля. Я создаю простой запрос DBObject и проверяю, если count != 0

BasicDBObject query = new BasicDBObject();
query.put("suitename", testsuite);
query.put("testname", testcase);
query.put("milestones.milestone_id", SampleProgram.milestone_id);

Если count == 0 -> добавить документ в монго -> это работает нормально

Я пытаюсь выяснить следующее: если у меня есть новое значениеmilestone_id в моем файле, мне просто нужно добавить веху в какой-то существующий массив вех документа. Существующий документ определяется на основе имени набора И имени теста.

Итак, если milestone_id = 10, документ должен выглядеть так:

{
"_id": {
    "$oid": "513fa587c5d0cf174eb9b1f8"
},
"suitename": "test_suite_name",
"testname": "test_name]",
"milestones": [
    {
        "milestone_id": 45
    },
    {
        "milestone_id": 10
    }

]
}

Как я могу это сделать?

Спасибо


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


Ответы (2)


Этого можно добиться с помощью оператора $push, который добавляет значения в массив и обновить(…) метод.

BasicDBObject query = new BasicDBObject();
query.put("suitename", testsuite);
query.put("testname", testcase);

BasicDBObject push = new BasicDBObject();
push.put("$push",
  new BasicDBObject("milestones",
    new BasicDBObject("milestone_id", SampleProgram.milestone_id)));

yourCollection.update(query, push);
person nutlike    schedule 12.03.2013
comment
Работает отлично. Можете ли вы сказать мне, где вы получили ссылку на API для put? - person user2162796; 13.03.2013
comment
@user2162796 user2162796 У меня тоже есть ощущение, что страница MongoDB устроена как-то странно, но вы можете найти документацию по API для различных версий для Java здесь. Всю информацию можно найти в соответствующих языковых центрах... (Я не могу точно выразить, почему меня расстраивает структура страницы, но каждый раз, когда мне что-то нужно, я падаю духом...) - person ppeterka; 13.03.2013
comment
@ user2162796: Поскольку я знал правильный термин, я просто искал его в Google. - person nutlike; 13.03.2013

person    schedule
comment
Вы также должны объяснить ответ - person Balwinder Singh; 13.09.2016