我刚刚发现MongoDB展示了一种奇怪的行为。
显然,任何带有字符串“system”的集合名称。其中任何地方都无法正常运作。
更糟糕的是,它甚至不会告诉你任何错误!
这更多的是好奇心问题,但有人知道为什么会这样吗?它是在某处记录的吗?
我的假设是它使用“”系统。*“集合来在内部存储事物(比如索引)并且不希望你弄乱它们,但这对我来说似乎不是正确的行为。
答案 0 :(得分:13)
你是对的“system。*”是MongoDB在每个数据库中使用的保留集合命名空间。
用于存储索引和用户等。
SQL Server也有很多这样的表,我不相信它们会警告你不要使用它们:)
但您可以随时提出此类功能的请求:http://jira.mongodb.org/
您可以通过运行...
来查看它们 > show collections
你会看到类似......
的东西 system.indexes
system.users
因此,您可以看到索引,例如:
> db.system.indexes.find()
来自MongoDB文档:
.system。* 名称空间 MongoDB很特别,包含 数据库系统信息。系统 集合包括:
- system.namespaces 列出所有名称空间。
- system.indexes 列出所有索引。
- database.ns中存在其他命名空间/索引元数据 文件,并且是不透明的。
- system.profile 存储数据库分析信息。
- system.users 列出可能访问数据库的用户。
- local.sources 存储副本从属配置数据和状态。
- 有关存储对象结构的信息存储在 对象本身。见BSON。
有几个限制 操纵系统中的对象 集合。插入 system.indexes添加索引,但是 否则该表是不可变的( 特殊的drop index命令更新它 为了你)。 system.users 是可修改的。 system.profile 可以删除。
http://docs.mongodb.org/manual/reference/system-collections/