停止MongoDB动态创建数据库和集合

16

有没有一种方法可以关闭Mongo的能力,以便在查询中看到一个数据库或集合时不会偶尔创建它们? 我经常在Mongo控制台上运行查询,并且会因为打错数据库或集合名称而导致Mongo创建它们。 应该有一个开关来让Mongo只显式地创建数据库和集合。 在文档中我找不到这种开关。

3个回答

10

明确一点,MongoDB不会在查询时自动创建集合或数据库。对于集合,只有当您实际保存数据到它们时才会自动创建它们。您可以自行测试,在类似下面的数据库中运行先前未知的集合的查询:

要清楚,MongoDB不会在查询时自动创建集合或数据库。对于集合,只有当您实际保存数据到它们时才会自动创建它们。您可以测试此功能,以在类似以下的数据库中运行有关先前未知集合的查询:

use unknowndb
db.unknowncollection.find()
show collections

在您插入或保存数据之前,名称为 "unknowncollection" 的集合不会显示出来。

数据库有点更复杂。简单地使用 "use unknowndb" 不会自动创建数据库。但是,如果在此操作后运行类似于 "show collections" 的命令,则会创建空数据库。

我同意,控制这种行为的选项将非常好。如果您在mongoDB上打开Jira票据,我很乐意投票支持它。


2
不,隐式创建集合和数据库是控制台的一个功能,无法禁用。您可以查看2.6版本的security/authorization/role功能,看看是否有任何帮助(尽管据我所知没有完全符合您要求的功能)。 我建议您浏览MongoDB的问题/错误/请求数据库系统here,如果该功能不存在,则可以选择添加功能请求。

1
如果您正在使用Mongoose,只要您的Mongoose模式包含任何形式的索引,就会自动创建一个新的数据库。这是因为Mongo需要在插入索引之前先创建一个数据库。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接