用户创建一个集合 - 我的javacode好吗?

时间:2011-11-15 10:39:28

标签: java mongodb nosql

我正在使用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?

谢谢!

3 个答案:

答案 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中,您可以选择使用唯一索引,这样可确保在集合中不会插入两个具有相同值的记录