MongoDB Java驱动程序创建数据库和集合

use*_*185 3 mongodb spring-data-mongodb

我正在测试如何创建数据库和收集mongo java驱动程序。

  MongoClient client = new MongoClient("localhost",27017);
        DB db = client.getDB("ow");
        DBCollection collection = db.getCollection("documents");
        collection.save(new BasicDBObject("_id",1));
        collection.remove(new BasicDBObject("_id",1));
        boolean result = db.collectionExists("documents");
        assertTrue(result);
        assertNotNull(collection);
        client.close();
Run Code Online (Sandbox Code Playgroud)

我希望对DB对象使用createCollection方法,但是发现除非插入第一个文档,否则它不会创建数据库/集合。

我的问题是这种理解正确吗?以上代码是否正确是创建集合或数据库的原因。

Bat*_*eam 5

宁愿在DB对象上使用createCollection方法,但发现除非插入第一个文档,否则它不会创建数据库/集合。

MongoDBimplicitly将第一个文档保存到集合中时创建一个集合。createCollection()将选项对象作为参数传递给该方法时,该方法才显式创建一个集合。

现在这很有意义。该options参数可以在一个或多个参数来决定我们要创建如集合的特点cappedautoIndexIdsizeusePowerOf2Sizesmax no. of documents

如果我们没有指定这些选项中的任何一个,则默认行为优先,即,在第一次插入时使用默认设置懒惰地创建一个集合。

因此,如果我们想要一个要定义其特征的集合,则可以将这些特征作为传递DBObjectcreateCollections()方法,然后将创建我们的集合。以下是如何传递选项的示例。

BasicDBObject options =  new BasicDBObject();
options.put("size", 12121212);
db.createCollection("hello", options);
Run Code Online (Sandbox Code Playgroud)

以上代码是否正确是创建集合或数据库的原因。

是。它允许mongodb将应用于default configuration您的收藏集。除非你要设置的 maxsizeautoIndexIdcappedusePowerOf2Sizes为您的新集合属性,这是好的。

请参阅http : //docs.mongodb.org/manual/reference/method/db.createCollection/