有没有办法在查询中看到一个dong和集合后,立即关闭mongo偶尔创建dbs和集合的能力。我一直在mongo控制台上运行查询并错误输入数据库或集合名称,导致mongo只创建一个。应该有一个开关让mongo只显式创建dbs和集合。我无法在文档中找到一个。
答案 0 :(得分:10)
要明确,MongoDB不会自动在查询上创建集合或数据库。对于集合,当您实际将数据保存到集合时,它们是自动创建的。您可以自己测试,对数据库中以前未知的集合运行查询,如下所示:
use unknowndb
db.unknowncollection.find()
show collections
没有名为" unknowncollection"显示,直到您插入或保存到它。
数据库有点复杂。简单的"use unknowndb"
不会自动创建数据库。但是,如果在执行此操作后运行"show collections"
之类的操作,则会创建空数据库。
我同意,控制这种行为的选择会很棒。如果你在mongoDB上打开一张Jira票,很高兴为它投票。
答案 1 :(得分:2)
不,隐式创建集合和数据库是控制台的一项功能,可能无法禁用。您可以查看2.6的security/authorization/role功能,看看是否有任何帮助(尽管根据我的知识,这并不是完全符合您的要求的东西)。
我建议查看MongoDB问题/错误/请求数据库系统here,并选择添加功能请求(如果它尚未存在)。
答案 2 :(得分:1)
对于使用Mongoose的用户,如果您的Mongoose Schema包含任何形式的 index ,则会自动创建一个新数据库。这是因为Mongo需要在插入所述索引之前创建数据库。