关于mongodb java驱动程序的困惑

New*_*ton 6 java deprecated mongodb

我是MongoDB的初学者,我正在使用JAVA驱动程序来玩它.

我有以下代码

MongoClient client = new MongoClient();
DB d = client.getDB("world");
DBCollection c = d.getCollection("zips");
DBCursor cursor = c.find();
Run Code Online (Sandbox Code Playgroud)

现在我的问题是我想使用一个简单的光标来浏览文档.不推荐使用getDB()方法,但它可以正常工作.在文档中提到getDB可以用MongoClient.getDatabase()替换; 但getDatabase()返回MongoDatabase而不是DB.

有人可以指出制作DBCursor的正确方法,而不使用任何弃用的方法.谢谢.

PS:我知道有像morphia,jongo等框架,但请不要讨论它们.我想目前只使用JAVA驱动程序.编辑:区别在于在JAVA驱动程序中获取游标而不是在DB和MongoClient之间

Dee*_*arg 11

是.确实如此.你可以用getDatabase替换getDB.这就是你如何使用它.

        /**** Get database ****/
        // if database doesn't exists, MongoDB will create it for you
        MongoDatabase mydatabase = mongoClient.getDatabase("mydatabase");

        /**** Get collection / table from 'testdb' ****/
        // if collection doesn't exists, MongoDB will create it for you

        FindIterable<Document> mydatabaserecords = mydatabase.getCollection("collectionName").find();
        MongoCursor<Document> iterator = mydatabaserecords.iterator();
        while (iterator.hasNext()) {
            Document doc = iterator.next();
            // do something with document
        }
Run Code Online (Sandbox Code Playgroud)

例:

所以,假设您的文档如下所示:

{
  "name": "Newton",
  "age": 25
}
Run Code Online (Sandbox Code Playgroud)

然后可以如下获取字段

while (iterator.hasNext()) {
    Document doc = iterator.next();
    String name = doc.getString("name");
    int age = doc.getInteger("age");
    System.out.println("Name: " + name);
    System.out.println("Age: " + age);
}
Run Code Online (Sandbox Code Playgroud)

我希望这能清除你的怀疑.