Resource Document

在本页面

资源文档指定特权允许actions的资源。

数据库和/或集合资源

要指定数据库和/或集合,请使用以下语法:

{ db: <database>, collection: <collection> }

将数据库的集合指定为资源

如果资源文档将dbcollection字段都作为非空字符串,则该资源是指定数据库中的指定集合。例如,以下文档指定products数据库中inventory集合的资源:

{ db: "products", collection: "inventory" }

对于以非admin数据库为范围的用户定义角色,其特权的资源说明必须指定与该角色相同的数据库。范围为admin数据库的用户定义角色可以指定其他数据库。

指定数据库作为资源

如果只有collection字段是空字符串(""),则资源是指定的数据库,但不包括system collections。例如,以下资源文档指定test数据库的资源,但不包括系统集合:

{ db: "test", collection: "" }

对于以非admin数据库为范围的用户定义角色,其特权的资源说明必须指定与该角色相同的数据库。范围为admin数据库的用户定义角色可以指定其他数据库。

Note

当您将数据库指定为资源时,系统集合将被排除,除非您明确命名它们,如下所示:

{ db: "test", collection: "system.js" }

系统集合包括但不限于以下各项:

将跨数据库的集合指定为资源

如果只有db字段为空字符串(""),则该资源是所有数据库中具有指定名称的所有集合。例如,以下文档指定所有数据库中所有accounts集合的资源:

{ db: "", collection: "accounts" }

对于用户定义的角色,只有作用于admin数据库的角色才能具有此资源规范的特权。

在所有数据库中指定所有非系统集合

如果dbcollection字段均为空字符串(""),则资源是所有数据库中的所有集合,但不包括system collections

{ db: "", collection: "" }

对于用户定义的角色,只有作用于admin数据库的角色才能具有此资源规范的特权。

Cluster Resource

要将群集指定为资源,请使用以下语法:

{ cluster : true }

使用cluster资源来执行影响系统状态的操作,而不是对特定的数据库或集合集进行操作。此类动作的示例是shutdownreplSetReconfigaddShard。例如,以下文档授予cluster上的动作shutdown

{ resource: { cluster : true }, actions: [ "shutdown" ] }

对于用户定义的角色,只有作用于admin数据库的角色才能具有此资源规范的特权。

anyResource

内部资源anyResource可以访问系统中的每个资源,仅供内部使用。 **除非特殊情况,否则请勿使用此资源。此资源的语法是{ anyResource: true }