我正在测试如何创建数据库和集合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方法,但发现除非插入第一个文档,否则它不会创建数据库/集合。
我的问题是这种理解是否正确?上面的代码是正确的是创建集合或数据库。
答案 0 :(得分:5)
当第一个文档保存到集合中时,更喜欢在数据库对象上使用createCollection方法,但发现它不会创建数据库/集合,除非第一个 文件已插入。
MongoDB
会创建一个集合implicitly
。 createCollection()
方法仅显式创建一个集合,只有如果将一个options对象作为参数传递给它。
现在这是有道理的。 options
参数可以接受一个或多个参数来决定我们要创建的集合的特征,例如capped
,autoIndexId
,size
,usePowerOf2Sizes
max no. of documents
。
如果我们没有指定任何这些选项,默认行为将优先,即每当第一次插入时,使用默认设置懒惰地创建一个集合。
因此,如果我们想要一个我们将要定义其特征的集合,那么我们可以将这些特性作为DBObject
传递给createCollections()
方法,并且我们的集合将被创建。以下是如何传递选项的示例。
BasicDBObject options = new BasicDBObject();
options.put("size", 12121212);
db.createCollection("hello", options);
上面的代码是正确的是创建集合或数据库。
是。它允许mongodb
将default configuration
应用于您的收藏。除非你想设置
您的新收藏品的max
,size
,autoIndexId
,capped
,usePowerOf2Sizes
属性,这很好。
参考:http://docs.mongodb.org/manual/reference/method/db.createCollection/