我正在使用java / mongodb。我想与一些用户创建一个表(集合)。好吧,它的工作我只是不确定我的编码风格。如果我只是想在这个系列中增加3个新人,可能会这么好吗?
BasicDBObject doc = new BasicDBObject();
doc.put("name", "klaus");
doc.put("age", 30);
doc.put("city", "new york");
col.insert(doc);
BasicDBObject doc2 = new BasicDBObject();
doc2.put("name", "mirko");
doc2.put("age", 23);
doc2.put("city", "madrid");
col.insert(doc2);
BasicDBObject doc3 = new BasicDBObject();
doc3.put("name", "jon");
doc3.put("age", 34);
doc3.put("city", "unknown");
col.insert(doc3);
它的外观如此“长”。要仅添加3个人,我必须创建始终一个新的BasicDBObject并使用相同的行代码插入它(col.insert(bla))?它也不能^^和另一个问题:第一次(doc)我将名称,年龄和城市添加为列。为什么我要一次又一次地添加“名字”,“年龄”和“城市”......我只想为doc2添加“mirko”,23和“madrid”。
最后一件让我烦恼的是,我可以使用相同的(!)值为Collection添加一个新的Dokument。我可以添加一个34年的新jon和同一个城市。这个可以吗?如果是的话,我想改变它。 HOWTO?
谢谢!
答案 0 :(得分:2)
使用json ..
String json = "{'key' : 'value'}"; /* Create json formatted data here */
DBObject dbObject = (DBObject)JSON.parse(json);
collection.insert(dbObject);
答案 1 :(得分:1)
无需多次执行插入操作。您可以进行一次插入调用以收集对象:
http://api.mongodb.org/java/2.0/com/mongodb/DBCollection.html#insert(java.util.List)
例如:
List<BasicDBObject> docs = new ArrayList<BasicDBObject>();
BasicDBObject doc = new BasicDBObject();
doc.put("name", "klaus");
doc.put("age", 30);
doc.put("city", "new york");
docs.add(doc);
BasicDBObject doc2 = new BasicDBObject();
doc2.put("name", "mirko");
doc2.put("age", 23);
doc2.put("city", "madrid");
docs.add(doc2);
BasicDBObject doc3 = new BasicDBObject();
doc3.put("name", "jon");
doc3.put("age", 34);
doc3.put("city", "unknown");
docs.add(doc3);
col.insert(docs);
答案 2 :(得分:0)
您可以随时为MongoDB尝试Morphia,一个java库。它允许您将POJO对象保存,检索和更新为文档。
对于与具有相同值的集合相关的第二个查询,在mongoDB中,您可以选择使用唯一索引,这样可确保在集合中不会插入两个具有相同值的记录