Списки 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
, Например, чтобы показать вам, как использовать драйвер, обработка исключений опущена.