Списки DBObjects - Mongo Java Driver

Я делаю игру, в которой есть наборы на разных многопользовательских серверах. Игроки могут приобрести комплекты, где он сохраняет их в базе данных Монго. Я хотел бы, чтобы база данных была отформатирована так:

{
    "server": "the_server_name",
    "players": {
        {
            "player": "the_players_username",
            "kits": [
                "kit1",
                "kit3"
            ]
        },
        {
            "player": "the_players_username",
            "kits": [
                "kit1",
                "kit2"
            ]
        }
    }
}

Я пытался сделать это безрезультатно. Кто-нибудь хотел бы предложить новичку некоторую помощь о том, как этого добиться? Спасибо!

1 ответ

Решение

Вот простой пример:

import com.mongodb.*;

public class MongoTest {

    public static void main(String[] args) throws Exception {
        MongoClient mongoClient = new MongoClient("localhost", 27017);
        DB db = mongoClient.getDB("myGameDB");
        DBCollection gameCollection = db.getCollection("myGameCollection");
        BasicDBObject obj = new BasicDBObject().append("sever", "the_server_name");
        BasicDBList players = new BasicDBList();
        BasicDBList list1 = new BasicDBList();
        BasicDBList list2 = new BasicDBList();
        list1.addAll(java.util.Arrays.asList(new String[]{"kit1", "kit2"}));
        list2.addAll(java.util.Arrays.asList(new String[]{"kit1", "kit2"}));
        BasicDBObject playerObj1 = new BasicDBObject("player", "the_players_username").append("kits", list1);
        BasicDBObject playerObj2 = new BasicDBObject("player", "the_players_username").append("kits", list2);
        players.add(playerObj1);
        players.add(playerObj2);
        obj.append("players", players);
        gameCollection.insert(obj);
        printCollectionContent(gameCollection);
    }


    static void printCollectionContent(DBCollection coll) {
        BasicDBObject query = new BasicDBObject();
        BasicDBObject fields = new BasicDBObject("server", true).append("_id", false).append("players",true);
        DBCursor curs = coll.find(query);
        while (curs.hasNext()) {
            DBObject o = curs.next();
            System.out.println(o.toString());
        }
        curs = coll.find(query, fields);
        while (curs.hasNext()) {
            DBObject o = curs.next();
            System.out.println(o.toString());
        }
    }
}

Кстати, ваш json на самом деле не действует. Игроки, кажется, массив, но он пропускает [ ]

В этом примере используется версия драйвера 2.11.3, Например, чтобы показать вам, как использовать драйвер, обработка исключений опущена.

Другие вопросы по тегам