在文档中插入文档

时间:2012-01-11 12:12:05

标签: java mongodb document nosql

我正在使用mongodb + java。我试图在现有文档中插入新文档。假设我有一个集合“用户”:

{"_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 个答案:

答案 0 :(得分:2)

查看您的更新。你甚至没有指定应该有一个字段“地址”。另请注意,您不是在文档中“插入”文档。而是将顶级文档的字段设置为嵌入文档的值。请改用:

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