Вставить документ в документ - PullRequest
0 голосов
/ 11 января 2012

Я использую mongodb + Java.Я попытался вставить новый документ в существующий документ.Допустим, у меня есть коллекция "Users":

{"_id" :{"$oid" : "4dc9..."}, "name" :"Klaus", "gender" :"unknown", "adress" :"null"}

Теперь я хотел бы обновить этот документ, где имя == Klaus, и добавить новый документ к ключу adress (где только сейчас "null«).Поэтому я хотел бы иметь что-то вроде этого:

{"_id" :{"$oid" : "4dc9..."}, "name" :"Klaus", "gender" :"unknown", "adress" :{"country" :"Austria", "city": "..."}}

Как это сделать на Java?Я пытался

//DBCollection col "Users"
String json = "{'country': '" + user.country + "', 'city': '" + user.city + "'}";
DBObject dbObject = (DBObject)JSON.parse(json);
col.update(new BasicDBObject().append("name", "Klaus"), dbObject); //not working

Я не получаю сообщение об ошибке, нового документа просто нет.Что-то не так с моим JSON?Или мне нужна другая функция "обновления", может быть, замена (заменить adress:null на adress:new document)?Спасибо за любую помощь!

1 Ответ

2 голосов
/ 11 января 2012

Посмотрите на ваше обновление.Ни в коем случае вы даже не указываете, что должно быть поле «адрес».Также обратите внимание, что вы не «вставляете» документ в документ здесь.Скорее вы устанавливаете в поле документа верхнего уровня значение, которое является встроенным документом.Используйте это вместо:

col.update(new BasicDBObject("name", "Klaus"), new BasicDBObject("$set", new BasicDBObject("address", dbObject)));
...