MongoDBJava的数据库。getCollection()不创建集合,即使javadoc这么说
报告指出:
Gets a collection with a given name. If the collection does not exist, a new collection is created.
但是,似乎该集合实际上是在稍后创建的。紧接着getCollection()不存在。例如,当插入一个文档时,它就会被创建
考虑如下:
myCollection.getDB().getCollection("dummy").getStats()
(com.mongodb.CommandResult) { "serverUsed" : "localhost/127.0.0.1:27801" , "ok" : 0.0 , "errmsg" : "ns not found"}
在我的例子中,我调用了一个mapreduce作业,我传递了一个尚不存在的集合。这也会导致“{”serverUsed:“localhost/127.0.0.1:27801”,“ok”:0.0,“errmsg:“ns不存在”}”
我猜JavaDoc是不正确的。实际上,该集合是在稍后创建的
如果是这样,实现立即创建集合的行为的最佳方式是什么
我使用的是java驱动程序版本2.11.3
# 1 楼答案
在某种程度上,您是对的,在java中,如果您只使用
db.getCollection("COLLECTION_NAME")
,则不会创建集合。例如:此处不会创建集合,但如果添加以下行,将创建集合:
在您的情况下,您可以检查集合是否已经存在,然后根据需要创建它: