MongoDB データソース構成ファイル
項目一覧
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> } }
フィールド | 説明 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
name string | 必須。デフォルト: この Atlas App Services アプリ内のクラスターを参照するために使用されるサービス名。 名前の長さは最大 64 文字で、ASCII 文字、数字、アンダースコア、ハイフンのみを含めることができます。 | ||||||||||||
type string | 必須。 MongoDB Atlas クラスターの場合、この値は常に "mongodb-atlas" です。 | ||||||||||||
config.clusterName string | 必須。 Atlas 内のクラスターの名前。 | ||||||||||||
config.readPreference string | サービスを通じて送信されたクエリの 読み込み設定( read preference ) モード
| ||||||||||||
config.wireProtocolEnabled Boolean | true の場合、クライアントはMongoDB ワイヤプロトコルを介してアプリに接続できます。 |
フェデレーティッドデータベースインスタンス
{ "name": "<Service Name>", "type": "datalake", "config": { "dataLakeName": "<Federated database instance name>" } }
フィールド | 説明 |
---|---|
name string | 必須。デフォルト: このApp Services App内のフェデレーティッドデータベースインスタンスを参照するために使用されるサービス名。 名前の長さは最大 64 文字で、ASCII 文字、数字、アンダースコア、ハイフンのみを含めることができます。 |
type string | 必須。 フェデレーティッドデータベースインスタンスの場合、この値は常に "datalake" です。 |
config.dataLakeName string | 必須。 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> }, ... }
フィールド | 説明 | |
---|---|---|
ref string | 外部コレクションを指定する JSON schema
| |
source_key string | 外部コレクション内のどのドキュメントを関係に含めるかを指定する、このコレクションのスキーマ内のフィールドの名前。 source_key にforeign_key フィールドの値が含まれている場合、外部ドキュメントが含まれます。 | |
foreign_key string | source_key が参照する値を含む外部コレクションのスキーマ内のフィールドの名前。 | |
is_list Boolean |
|
例
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 } } }
フィールド | 説明 | ||||||||
---|---|---|---|---|---|---|---|---|---|
name string | ロールの名前。 ロール名は、同じコレクション内のロールを識別して区別します。 100 文字以下に制限します。 | ||||||||
apply_when object | この ロール がユーザーに適用される場合に true と評価される 式 。 Device Sync(フレキシブルモード)が有効になっていない場合、App Services はドキュメントごとにロールを割り当てます。 Device Sync(フレキシブルモード)が有効になっている場合、App Services はコレクションごと、セッションごとに、つまりクライアントが同期接続を開くときに同期されたコレクションごとにロールを割り当てます。 ロールを割り当てるために、App Services は、1 つのロールが true と評価されるまで、各潜在的なロールの Device Sync(フレキシブルモード)が有効な場合、割り当てられたロールはSync に互換性がなければなりません。 ロールが同期に互換性がないが、 | ||||||||
document_filters Document Default: undefined | ロールの他の権限を評価できるかどうかを決定する読み取り式と書込み式を含むドキュメント。 Device Sync が有効な場合、ロールを Sync と互換性 Device Sync が有効になっていない場合、
| ||||||||
document_filters.read object? Default: undefined |
同期の互換性を維持するには、 式は定義する必要があります。この式はクエリ可能なフィールドのみを参照できます。 | ||||||||
document_filters.write object? Default: undefined |
同期の互換性を維持するには、 式は定義する必要があります。この式はクエリ可能なフィールドのみを参照できます。 | ||||||||
read object? Default: undefined | ロールがドキュメント内のすべてのフィールドを読み取る権限を持つ場合に true と評価される式。 同期の互換性を維持するには、式はブール値のリテラル( ドキュメントレベルの読み取り権限は、フィールドレベルの権限よりも優先されます。 ロールにドキュメントレベルの フィールドレベルのルールと並行してデフォルトのフォールバックを定義するには、 | ||||||||
write object? Default: undefined | ロールがドキュメント内のすべてのフィールドを追加、変更、または削除する権限を持つ場合に true と評価される式。 同期の互換性を維持するには、式はブール値のリテラル( ドキュメントレベルの書込み権限は、フィールドレベルの権限よりも優先されます。 ロールにドキュメントレベルの フィールドレベルのルールと並行してデフォルトのフォールバックを定義するには、
重要暗黙的な読み取り権限ロールが特定のスコープに対して | ||||||||
insert object? Default: true | ロールに新しいドキュメントをコレクションに挿入する権限がある場合は、 Atlas App Services は、挿入操作でのみ、および新しいドキュメントのすべてのフィールドに対して | ||||||||
delete object? Default: true | ロールがコレクションからドキュメントを削除する権限を持つ場合に true と評価される式。 App Services は、削除操作でのみ、および削除されるドキュメント内のすべてのフィールドに対してロールが | ||||||||
search Boolean Default: true | ロールが Atlas Search を使用してコレクションを検索する権限を持っている場合に true と評価される 式 。 重要App Services はシステムユーザーとして | ||||||||
fields Document Default: {} | 各キーがフィールド名に対応し、各値がクエリされたドキュメント内の対応するフィールドに対するロールのフィールドレベルの 同期の互換性を維持するには、内部の
注意権限の優先順位ドキュメントレベルの | ||||||||
fields.<Field Name>.read object? Default: false | |||||||||
fields.<Field Name>.write object? Default: false | |||||||||
fields.<Field Name>.fields Document Default: {} | クエリされたドキュメントのこのフィールドに埋め込まれたフィールドに対する 詳細については、「埋め込みドキュメントに対するフィールドレベルの権限 」ロール パターンを参照してください。 | ||||||||
additional_fields Document Default: {} |
同期の互換性を維持するには、内部の
| ||||||||
additional_fields.read object? Default: false | |||||||||
additional_fields.write object? Default: false |
フィルター
{ "name": "<Filter Name>", "apply_when": { Expression }, "query": { MongoDB Query }, "projection": { MongoDB Projection } }
フィールド | 説明 | |
---|---|---|
name string | 必須。 フィルターの名前。 フィルター名は、フィルターを識別して区別するのに役立ちます。 100 文字以下に制限します。 | |
apply_when object | このフィルターが受信 MongoDB 操作に適用されるタイミングを決定する式。 重要Atlas App Services はドキュメントを読み取る前にフィルターを評価して適用するため、フィルターの Apply When 式でMongoDB ドキュメント展開を使用することはできません。ただし、 | |
query object Default: {} | App Services がフィルタリングされた操作の既存のクエリにマージするMongoDB クエリ。 例フィルターは、次のクエリを使用して、
| |
projection object Default: {} | App Services がフィルタリングされた操作の既存のプロジェクションに統合するMongoDB プロジェクション。 重要プロジェクションの競合MongoDB プロジェクションには包括的と排他的のいずれかのプロジェクションががあります。つまり、指定されたフィールドのみを返すか、指定されていないフィールドを除外することができます。 クエリに複数のフィルターを適用する場合、フィルターはすべて同じプロジェクション タイプを指定する必要があります。そうしないと、クエリは失敗します。 例フィルターは、次のプロジェクションを使用するすべてのドキュメントから
|