【问题标题】:Lists of DBObjects - Mongo Java DriverDBObject 列表 - Mongo Java 驱动程序
【发布时间】:2014-02-18 07:50:51
【问题描述】:

我正在制作一个游戏,其中在不同的多人服务器中有工具包。玩家可以购买套件,并将其保存到 Mongo 数据库中。我希望数据库的格式如下:

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

我尝试过这样做,但无济于事。有人愿意为初学者提供一些关于如何实现这一目标的帮助吗?谢谢!

【问题讨论】:

    标签: java list mongodb driver dbobject


    【解决方案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 实际上是无效的。 Players 似乎是一个数组,但它缺少 [ ]

    本示例使用驱动程序版本2.11.3。示例是为大家展示如何使用驱动,省略了异常处理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-15
      • 2016-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-05
      • 1970-01-01
      相关资源
      最近更新 更多