"系统." 在MongoDB的集合名称中

Kev*_*lan 9 mongodb

我刚刚发现MongoDB展示了一种奇怪的行为.

显然,任何带有字符串"system"的集合名称.它中的任何地方都无法正常运作.

更糟糕的是,它甚至不会告诉你任何错误!

这更多的是好奇心问题,但是有人知道为什么会这样吗?它在某处记录了吗?

我的假设是它使用""系统.*"集合来在内部存储事物(比如索引),并且不希望你弄乱它们,但这对我来说似乎不是正确的行为.

Jus*_*ins 13

你是对的"system.*"是MongoDB在每个DB中使用的保留集合命名空间.

它用于存储索引和用户等.

SQL Server也有很多这样的表,我不相信他们警告你不要使用它们:)

但是你总是可以提出这样的功能请求:http://jira.mongodb.org/

你可以通过运行来看到它们......

> show collections

你会看到类似......

system.indexes

system.users

因此,您可以看到您的索引,例如:

> db.system.indexes.find()

来自MongoDB文档:

MongoDB中的.system.*命名空间是特殊的,包含数据库系统信息.系统集包括:

  • 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/