app/ └── data_sources/ └── <service name>/ ├── config.json └── <database>/ └── <collection>/ ├── schema.json ├── relationships.json └── rules.json
サービス構成
MongoDB クラスター
{ "name": "<Service Name>", "type": "mongodb-atlas", "config": { "clusterName": "<Atlas Cluster Name>", "readPreference": "<Read Preference>", "wireProtocolEnabled": <Boolean> } }
フィールド | 説明 | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
namestring | 必須。デフォルト: この Atlas App Services アプリ内のクラスターを参照するために使用されるサービス名。 名前の長さは最大 64 文字で、ASCII 文字、数字、アンダースコア、ハイフンのみを含めることができます。 | ||||||||||||
typestring | 必須。 MongoDB Atlas クラスターの場合、この値は常に | ||||||||||||
config.clusterNamestring | 必須。 Atlas 内のクラスターの名前。 | ||||||||||||
config.readPreferencestring | サービスを通じて送信されたクエリの 読み込み設定( read preference ) モード
| ||||||||||||
config.wireProtocolEnabledBoolean |
|
フェデレーティッドデータベースインスタンス
{ "name": "<Service Name>", "type": "datalake", "config": { "dataLakeName": "<Federated database instance name>" } }
フィールド | 説明 |
|---|---|
namestring | 必須。デフォルト: このApp Services App内のフェデレーティッドデータベースインスタンスを参照するために使用されるサービス名。 名前の長さは最大 64 文字で、ASCII 文字、数字、アンダースコア、ハイフンのみを含めることができます。 |
typestring | 必須。 フェデレーティッドデータベースインスタンスの場合、この値は常に |
config.dataLakeNamestring | 必須。 Atlas 内のフェデレーティッドデータベースインスタンスの名前。 |
データベースとコレクション
コレクション スキーマ
コレクションにスキーマを適用する場合は、ドキュメントのJSON schemaを含む schema.json 構成ファイルを定義します。 ルート レベル スキーマは、次の形式を持つオブジェクト スキーマである必要があります。
{ "title": "<Object Type Name>", "bsonType": "object", "properties": { "<Property Name>": { <Schema> }, ... } }
関係
{ "<Source Field Name>": { "ref": "#/relationship/<Data Source Name>/<Database Name>/<Collection Name>", "source_key": "<Source Field Name>", "foreign_key": "<Foreign Field Name>", "is_list": <Boolean> }, ... }
フィールド | 説明 | |
|---|---|---|
refstring | 外部コレクションを指定する JSON schema | |
source_keystring | 外部コレクション内のどのドキュメントを関係に含めるかを指定する、このコレクションのスキーマ内のフィールドの名前。 | |
foreign_keystring |
| |
is_listBoolean |
|
例
eコマース アプリは、2 つのコレクション間の関係を定義します。 store.orders内の各ドキュメントは、注文のitems配列にアイテム_idの値を含めることで、 store.itemsコレクション内の 1 つ以上のドキュメントを参照します。 どちらのコレクションも同じ連結クラスター( mongodb-atlas )とデータベース( store )内にあります。
この関係はordersコレクションに対して定義されています。
{ "items": { "ref": "#/relationship/mongodb-atlas/store/items", "source_key": "items", "foreign_key": "_id", "is_list": true } }
デフォルト ルール
より具体的なコレクション レベルのルールが定義されていないデータソース内の、すべてのコレクションに適用するデフォルト ルールを定義できます。
データソースのdefault_rule.json構成ファイルでdata_sources/<data-source-name>/default_rule.jsonでデフォルト ルールを定義します。
{ "roles": [<Role>], "filters": [<Filter>] }
コレクション ルール
データソースがフェデレーティッド データソースでない場合は、コレクションのrules.json構成ファイルでコレクションレベルのルールを定義できます。
{ "database": "<Database Name>", "collection": "<Collection Name>", "roles": [<Role>], "filters": [<Filter>] }
ルール構成
ロール
{ "name": "<Role Name>", "apply_when": { Expression }, "document_filters": { "read": { Expression }, "write": { Expression } }, "read": { Expression }, "write": { Expression }, "insert": { Expression }, "delete": { Expression }, "search": <Boolean>, "fields": { "<Field Name>": { "read": { Expression }, "write": { Expression }, "fields": { Embedded Fields } }, ... }, "additional_fields": { "read": { Expression }, "write": { Expression } } }
フィールド | 説明 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
namestring | ロールの名前。 ロール名は、同じコレクション内のロールを識別して区別します。 100 文字以下に制限します。 | ||||||||
apply_whenobject | この ロール がユーザーに適用される場合に true と評価される 式 。 Device Sync(フレキシブルモード)が有効になっていない場合、App Services はドキュメントごとにロールを割り当てます。 Device Sync(フレキシブルモード)が有効になっている場合、App Services はコレクションごと、セッションごとに、つまりクライアントが同期接続を開くときに同期されたコレクションごとにロールを割り当てます。 ロールを割り当てるために、App Services は、1 つのロールが true と評価されるまで、各潜在的なロールの Device Sync(フレキシブルモード)が有効な場合、割り当てられたロールはSync に互換性がなければなりません。 ロールが同期に互換性がないが、 | ||||||||
document_filtersDocument Default: undefined | ロールの他の権限を評価できるかどうかを決定する読み取り式と書込み式を含むドキュメント。 Device Sync が有効な場合、ロールを Sync と互換性 Device Sync が有効になっていない場合、 | ||||||||
document_filters.readobject?Default: undefined |
同期の互換性を維持するには、 式は定義する必要があります。この式はクエリ可能なフィールドのみを参照できます。 | ||||||||
document_filters.writeobject?Default: undefined |
同期の互換性を維持するには、 式は定義する必要があります。この式はクエリ可能なフィールドのみを参照できます。 | ||||||||
readobject?Default: undefined | ロールがドキュメント内のすべてのフィールドを読み取る権限を持つ場合に true と評価される式。 同期の互換性を維持するには、式はブール値のリテラル( ドキュメントレベルの読み取り権限は、フィールドレベルの権限よりも優先されます。 ロールにドキュメントレベルの フィールドレベルのルールと並行してデフォルトのフォールバックを定義するには、 | ||||||||
writeobject?Default: undefined | ロールがドキュメント内のすべてのフィールドを追加、変更、または削除する権限を持つ場合に true と評価される式。 同期の互換性を維持するには、式はブール値のリテラル( ドキュメントレベルの書込み権限は、フィールドレベルの権限よりも優先されます。 ロールにドキュメントレベルの フィールドレベルのルールと並行してデフォルトのフォールバックを定義するには、
重要暗黙的な読み取り権限ロールが特定のスコープに対して | ||||||||
insertobject?Default: true | ロールに新しいドキュメントをコレクションに挿入する権限がある場合は、 Atlas App Services は、挿入操作でのみ、および新しいドキュメントのすべてのフィールドに対して | ||||||||
deleteobject?Default: true | ロールがコレクションからドキュメントを削除する権限を持つ場合に true と評価される式。 App Services は、削除操作でのみ、および削除されるドキュメント内のすべてのフィールドに対してロールが | ||||||||
searchBoolean Default: true | ロールが Atlas Search を使用してコレクションを検索する権限を持っている場合に true と評価される 式 。 重要App Services はシステムユーザーとして | ||||||||
fieldsDocument Default: {} | 各キーがフィールド名に対応し、各値がクエリされたドキュメント内の対応するフィールドに対するロールのフィールドレベルの 同期の互換性を維持するには、内部の 注意権限の優先順位ドキュメントレベルの | ||||||||
fields.<Field Name>.readobject?Default: false | |||||||||
fields.<Field Name>.writeobject?Default: false | |||||||||
fields.<Field Name>.fieldsDocument Default: {} | クエリされたドキュメントのこのフィールドに埋め込まれたフィールドに対する 詳細については、「埋め込みドキュメントに対するフィールドレベルの権限 」ロール パターンを参照してください。 | ||||||||
additional_fieldsDocument Default: {} |
同期の互換性を維持するには、内部の | ||||||||
additional_fields.readobject?Default: false | |||||||||
additional_fields.writeobject?Default: false |
フィルター
{ "name": "<Filter Name>", "apply_when": { Expression }, "query": { MongoDB Query }, "projection": { MongoDB Projection } }
フィールド | 説明 | |
|---|---|---|
namestring | 必須。 フィルターの名前。 フィルター名は、フィルターを識別して区別するのに役立ちます。 100 文字以下に制限します。 | |
apply_whenobject | このフィルターが受信 MongoDB 操作に適用されるタイミングを決定する式。 重要Atlas App Services はドキュメントを読み取る前にフィルターを評価して適用するため、フィルターの Apply When 式でMongoDB ドキュメント展開を使用することはできません。ただし、 | |
queryobjectDefault: {} | App Services がフィルタリングされた操作の既存のクエリにマージするMongoDB クエリ。 例フィルターは、次のクエリを使用して、 | |
projectionobjectDefault: {} | App Services がフィルタリングされた操作の既存のプロジェクションに統合するMongoDB プロジェクション。 重要プロジェクションの競合MongoDB プロジェクションには包括的と排他的のいずれかのプロジェクションががあります。つまり、指定されたフィールドのみを返すか、指定されていないフィールドを除外することができます。 クエリに複数のフィルターを適用する場合、フィルターはすべて同じプロジェクション タイプを指定する必要があります。そうしないと、クエリは失敗します。 例フィルターは、次のプロジェクションを使用するすべてのドキュメントから |