Создать коллекцию с пользователями - мой javacode хорошо? - PullRequest
0 голосов
/ 15 ноября 2011

Я использую 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) я добавляю имя, возраст и город в качестве столбца. Почему я должен снова и снова добавлять "имя", "возраст" и "город" ... Я просто хочу добавить "мирко", 23 и "Мадрид" для doc2.

Последнее, что меня беспокоит, это то, что я могу добавить новый Документ в коллекцию с теми же (!) Значениями. Я мог бы добавить нового Джона с 34 годами и того же города. Это нормально? И если да, я хотел бы изменить это. Howto

Спасибо!

Ответы [ 3 ]

2 голосов
/ 15 ноября 2011

Используйте для этого json ..

String json = "{'key' : 'value'}"; /* Create json formatted data here */

DBObject dbObject = (DBObject)JSON.parse(json);

collection.insert(dbObject);
1 голос
/ 15 ноября 2011

Нет необходимости выполнять вставку несколько раз.Вы можете сделать один вызов вставки для коллекции объектов:

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);
0 голосов
/ 15 ноября 2011

Вы всегда можете попробовать Morphia , библиотеку Java, для MongoDB. Позволяет сохранять, извлекать и обновлять объекты POJO как документы.

Для вашего второго запроса, связанного с коллекциями с одинаковыми значениями, в mongoDB у вас есть возможность использовать уникальные индексы, что гарантирует, что в коллекцию не будут вставлены две записи с одинаковыми значениями

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...