2013-03-12 6 views
2

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

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

У меня есть соединение ключ на SuiteName, АСМАП и milestone_id. Я должен обработать файл, который имеет эти три поля. Я создаю простой запрос DBObject и проверить, если кол = 0

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

Если счетчик == 0 -> добавить документ в Монго -> это, кажется, работает хорошо

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

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

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

] 
} 

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

Благодаря

ответ

4

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

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

Работает отлично. Можете ли вы рассказать мне, где вы получили ссылку API для put? – user2162796

+0

@ user2162796 У меня тоже есть ощущение, что страница MongoDB структурирована каким-то странным образом, но вы можете найти документы API для различных версий для Java [здесь] (http://api.mongodb.org/java/index.html) , Вся информация может быть найдена в соответствующих «языковых центрах» ... (я не могу точно выразить, почему меня расстраивает структура страницы, но я каждый раз сталкивался с проблемой, когда мне что-то нужно ...) – ppeterka

+0

@ user2162796: Поскольку я знал правильный термин, я просто искал его. – nutlike

1
BasicDBObject newDocument = new BasicDBObject(); 
newDocument.append("$set", new BasicDBObject().append("clients", 110)); 

BasicDBObject searchQuery = new BasicDBObject().append("hosting", "hostB"); 

collection.update(searchQuery, newDocument); 
+0

Вы также должны объяснить ответ –

Смежные вопросы