system.roles Collection集合
On this page本页内容
The system.roles collection in the admin database stores the user-defined roles. admin数据库中的system.roles集合存储用户定义的角色。To create and manage these user-defined roles, MongoDB provides role management commands.为了创建和管理这些用户定义的角色,MongoDB提供了角色管理命令。
system.roles Schema架构
The documents in the system.roles collection have the following schema:system.roles集合中的文档具有以下架构:
{
  _id: <system-defined id>,
  role: "<role name>",
  db: "<database>",
  privileges:
      [
          {
              resource: { <resource> },
              actions: [ "<action>", ... ]
          },
          ...
      ],
  roles:
      [
          { role: "<role name>", db: "<database>" },
          ...
      ]
}
A system.roles document has the following fields:system.roles文档包含以下字段:
- admin.system.roles.role
- 
Therolefield is a string that specifies the name of the role.role字段是一个字符串,用于指定角色的名称。
- admin.system.roles.db
- 
Thedbfield is a string that specifies the database to which the role belongs.db字段是一个字符串,用于指定角色所属的数据库。MongoDB uniquely identifies each role by the pairing of its name (i.e.MongoDB通过名称(即role) and its database.role)和数据库的配对来唯一标识每个角色。
- admin.system.roles.privileges
- 
Theprivilegesarray contains the privilege documents that define the privileges for the role.privileges数组包含定义角色权限的权限文档。A privilege document has the following syntax:权限文档具有以下语法:{
 resource: { <resource> },
 actions: [ "<action>", ... ]
 }Each privilege document has the following fields:每个权限文档都有以下字段:- admin.system.roles.privileges[n].resource
- 
A document that specifies the resources upon which the privilege一种文档,用于指定应用权限actionsapply.actions的资源。The document has one of the following form:该文件具有以下形式之一:{ db: <database>, collection: <collection> }or或者{ cluster : true }See Resource Document for more details.有关详细信息,请参阅资源文档。
 - admin.system.roles.privileges[n].actions
- 
An array of actions permitted on the resource.允许对资源执行的操作的数组。For a list of actions, see Privilege Actions.有关操作列表,请参阅权限操作。
 
- admin.system.roles.roles
- 
Therolesarray contains role documents that specify the roles from which this role inherits privileges.roles数组包含指定此角色从中继承权限的角色的角色文档。A role document has the following syntax:角色文档具有以下语法:{ role: "<role name>", db: "<database>" }A role document has the following fields:角色文档包含以下字段:- admin.system.roles.roles[n].role
- 
The name of the role.角色的名称。A role can be a built-in role provided by MongoDB or a user-defined role.角色可以是MongoDB提供的内置角色,也可以是用户定义的角色。
 
Examples实例
Consider the following sample documents found in 请考虑在system.roles collection of the admin database.admin数据库的system.roles集合中找到的以下示例文档。
A User-Defined Role Specifies Privileges用户定义的角色指定权限
The following is a sample document for a user-defined role 以下是为appUser defined for the myApp database:myApp数据库定义的用户定义角色appUser的示例文档:
{
  _id: "myApp.appUser",
  role: "appUser",
  db: "myApp",
  privileges: [
       { resource: { db: "myApp" , collection: "" },
         actions: [ "find", "createCollection", "dbStats", "collStats" ] },
       { resource: { db: "myApp", collection: "logs" },
         actions: [ "insert" ] },
       { resource: { db: "myApp", collection: "data" },
         actions: [ "insert", "update", "remove", "compact" ] },
       { resource: { db: "myApp", collection: "system.js" },
         actions: [ "find" ] },
  ],
  roles: []
}
The privileges array lists the five privileges that the appUser role specifies:privileges数组列出了appUser角色指定的五种权限:
- The first privilege permits its actions (第一个权限允许其对myApp数据库中的所有集合(不包括其系统集合)执行操作(- "find",- "createCollection",- "dbStats",- "collStats") on all the collections in the- myAppdatabase excluding its system collections.- "find"、- "createCollection"、- "dbStats"、- "collStats")。- See Specify a Database as Resource.请参见将数据库指定为资源。
- The next two privileges permits additional actions on specific collections,接下来的两个权限允许对myApp数据库中的特定集合、- logsand- data, in the- myAppdatabase.- logs和- data执行其他操作。- See Specify a Collection of a Database as Resource.请参见将数据库的集合指定为资源。
- The last privilege permits actions on one system collections in the最后一个权限允许对- myAppdatabase.- myApp数据库中的一个系统集合执行操作。- While the first privilege gives database-wide permission for the虽然第一个权限为- findaction, the action does not apply to- myApp's system collections.- find操作提供数据库范围的权限,但该操作不适用于- myApp的系统集合。- To give access to a system collection, a privilege must explicitly specify the collection. See Resource Document.若要授予对系统集合的访问权限,权限必须显式指定该集合。请参阅资源文档。
As indicated by the empty 如空roles array, appUser inherits no additional privileges from other roles.roles数组所示,appUser不会从其他角色继承任何其他权限。
User-Defined Role Inherits from Other Roles用户定义的角色继承自其他角色
The following is a sample document for a user-defined role 以下是为appAdmin defined for the myApp database: The document shows that the appAdmin role specifies privileges as well as inherits privileges from other roles:myApp数据库定义的用户定义角色appAdmin的示例文档:该文档显示appAdmin角色指定权限以及从其他角色继承权限:
{
  _id: "myApp.appAdmin",
  role: "appAdmin",
  db: "myApp",
  privileges: [
      {
         resource: { db: "myApp", collection: "" },
         actions: [ "insert", "dbStats", "collStats", "compact" ]
      }
  ],
  roles: [
      { role: "appUser", db: "myApp" }
  ]
}
The privileges array lists the privileges that the appAdmin role specifies. privileges数组列出appAdmin角色指定的权限。This role has a single privilege that permits its actions ( 此角色具有单一权限,允许其对myApp数据库中的所有集合(不包括其系统集合)执行操作("insert", "dbStats", "collStats", "compact") on all the collections in the myApp database excluding its system collections. "insert"、"dbStats"、"collStats"和"compact")。See Specify a Database as Resource.请参见将数据库指定为资源。
The roles array lists the roles, identified by the role names and databases, from which the role appAdmin inherits privileges.roles数组列出由角色名称和数据库标识的角色,角色appAdmin从中继承权限。