“系统。”在MongoDB的集合名称中

时间:2011-01-12 04:06:10

标签: mongodb

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

显然,任何带有字符串“system”的集合名称。其中任何地方都无法正常运作。

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

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

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

1 个答案:

答案 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/