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

时间:2014-11-16 01:48:07

标签: 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();

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

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

1 个答案:

答案 0 :(得分:5)

  

更喜欢在数据库对象上使用createCollection方法,但发现它不会创建数据库/集合,除非第一个   文件已插入。

当第一个文档保存到集合中时,

MongoDB会创建一个集合implicitlycreateCollection()方法仅显式创建一个集合,只有如果将一个options对象作为参数传递给它。

现在这是有道理的。 options参数可以接受一个或多个参数来决定我们要创建的集合的特征,例如cappedautoIndexIdsizeusePowerOf2Sizes max no. of documents

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

因此,如果我们想要一个我们将要定义其特征的集合,那么我们可以将这些特性作为DBObject传递给createCollections()方法,并且我们的集合将被创建。以下是如何传递选项的示例。

BasicDBObject options =  new BasicDBObject();
options.put("size", 12121212);
db.createCollection("hello", options);
  

上面的代码是正确的是创建集合或数据库。

是。它允许mongodbdefault configuration应用于您的收藏。除非你想设置 您的新收藏品的maxsizeautoIndexIdcappedusePowerOf2Sizes属性,这很好。

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