リソース ドキュメントでは、権限により actionsが許可されるリソースを指定します。
データベースおよび/またはコレクション リソース
データベースやコレクションを指定するには、次の構文を使用します。
{ db: <database>, collection: <collection> } 
リソースとしてデータベースのコレクションを指定
リソースdb collectionドキュメントで、 フィールドと フィールドの両方が空でない文字列として指定されている場合、リソースは指定されたデータベース内の指定されたコレクションです。たとえば、次のドキュメントでは、 productsデータベース内のinventoryコレクションのリソースを指定しています。
{ db: "products", collection: "inventory" } 
admin以外のデータベースをスコープとするユーザー定義ロールの場合、その権限のリソース仕様でロールと同じデータベースを指定する必要があります。 adminデータベースをスコープとするユーザー定義のロールは、他のデータベースを指定できます。
リソースとしてのデータベースを指定
collection フィールドのみが空のstring ("")の場合、リソースは指定されたデータベースで、システム コレクションを除きます。 たとえば、次のリソース ドキュメントでは、システム コレクションを除くtestデータベースのリソースを指定します。
{ db: "test", collection: "" } 
admin以外のデータベースをスコープとするユーザー定義ロールの場合、その権限のリソース仕様でロールと同じデータベースを指定する必要があります。 adminデータベースをスコープとするユーザー定義のロールは、他のデータベースを指定できます。
注意
リソースとしてデータベースを指定すると、次のように名前を明示的に指定しない限り、システム コレクションは除外されます。
{ db: "test", collection: "system.js" } 
システム コレクションには以下が含まれますが、これらに限定されません。
- system.usersデータベースの 自己管理型配置の- adminコレクション
- system.rolesデータベースの 自己管理型配置の- adminコレクション
リソースとしてデータベース全体でコレクションを指定
db フィールドのみが空のstring ("")の場合、リソースはすべてのデータベースにわたる指定された名前を持つすべてのコレクションです。 たとえば、次のドキュメントでは、すべてのデータベースにわたるすべてのaccountsコレクションのリソースを指定します。
{ db: "", collection: "accounts" } 
ユーザー定義ロールの場合、 adminデータベースにスコープが設定されたロールのみが、特権のこのリソース仕様を持つことができます。
すべてのデータベースのすべての非システム コレクションを指定
dbフィールドとcollectionフィールドの両方が空の文字列( "" )の場合、リソースはすべてのデータベース内のすべてのコレクション(システム コレクションを除く)です。
{ db: "", collection: "" } 
ユーザー定義ロールの場合、 adminデータベースにスコープが設定されたロールのみが、特権のこのリソース仕様を持つことができます。
クラスター リソース
クラスターをリソースとして指定するには、次の構文を使用します。
{ cluster : true } 
特定のデータベースセットやコレクションに対して実行されるのではなく、システムの状態に影響を与えるアクションには、 clusterリソースを使用します。 このようなアクションの例には、 shutdown 、 replSetReconfig 、 addShardなどがあります。 たとえば、次のドキュメントでは、 clusterでアクションshutdownが付与されます。
{ resource: { cluster : true }, actions: [ "shutdown" ] } 
ユーザー定義ロールの場合、 adminデータベースにスコープが設定されたロールのみが、特権のこのリソース仕様を持つことができます。
anyResource
内部リソースanyResourceはシステム内のすべてのリソースへのアクセスを許可し、内部での使用を目的としています。 Do not use this resource, other than in exceptional circumstances. このリソースの構文は{ anyResource: true }です。