MongoDB 데이터 소스 구성 파일
app/ └── data_sources/ └── <service name>/ ├── config.json └── <database>/ └── <collection>/ ├── schema.json ├── relationships.json └── rules.json
서비스 구성
MongoDB cluster
{ "name": "<Service Name>", "type": "mongodb-atlas", "config": { "clusterName": "<Atlas Cluster Name>", "readPreference": "<Read Preference>", "wireProtocolEnabled": <Boolean> } }
필드 | 설명 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
name string | 필수 사항입니다. 기본값입니다: 이 Atlas App Services App 내에서 cluster를 참조하는 데 사용되는 서비스 이름입니다. 이름은 최대 64자까지 입력할 수 있으며 ASCII 문자, 숫자, 밑줄 및 하이픈만 포함할 수 있습니다. | ||||||||||||
type string | 필수입니다. MongoDB Atlas 클러스터의 경우 이 값은 항상 "mongodb-atlas" 입니다. | ||||||||||||
config.clusterName string | 필수입니다. Atlas에서의 cluster의 이름입니다. | ||||||||||||
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 앱 내에서 연합 데이터베이스 인스턴스를 참조하는 데 사용되는 서비스 이름입니다. 이름은 최대 64자까지 입력할 수 있으며 ASCII 문자, 숫자, 밑줄 및 하이픈만 포함할 수 있습니다. |
type string | 필수입니다. 연합 데이터베이스 인스턴스의 경우 이 값은 항상 "datalake" 입니다. |
config.dataLakeName string | 필수입니다. Atlas의 연합 데이터베이스 인스턴스의 이름입니다. |
데이터베이스 & collection
collection 스키마
컬렉션에 대한 스키마 를 적용하려면 문서에 대한 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 | 외부 collection을 지정하는 JSON schema
| |
source_key string | 관계에 포함할 외부 collection의 문서를 지정하는 이 collection 스키마의 필드 이름입니다. source_key 에 foreign_key 필드의 값이 포함되어 있으면 외부 문서가 포함됩니다. | |
foreign_key string | source_key 에서 참조하는 값을 포함하는 외부 컬렉션 스키마의 필드 이름입니다. | |
is_list Boolean |
|
예시
전자상거래 앱은 두 collection 간의 관계를 정의합니다. 즉, store.orders
의 각 문서는 주문의 items
배열에 항목 _id
값을 포함하여 store.items
collection에 있는 하나 이상의 문서를 참고합니다. 두 collection 모두 동일한 연결된 클러스터(mongodb-atlas
)와 데이터베이스(store
)에 있습니다.
관계는 orders
collection에 대해 정의되어 있습니다.
{ "items": { "ref": "#/relationship/mongodb-atlas/store/items", "source_key": "items", "foreign_key": "_id", "is_list": true } }
기본 규칙
더 구체적인 컬렉션 수준 규칙이 정의되지 않은 데이터 소스의 모든 컬렉션에 적용되는 기본 규칙을 정의할 수 있습니다.
data_sources/<data-source-name>/default_rule.json
에 있는 데이터 소스의 default_rule.json
구성 파일에서 기본 규칙을 정의합니다.
{ "roles": [<Role>], "filters": [<Filter>] }
컬렉션 규칙
데이터 소스가 연합 데이터 소스가 아닌 경우, collection의 rules.json
구성 파일에서 collection 수준 규칙을 정의할 수 있습니다.
{ "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 | 이 역할 이 사용자에게 적용될 때 참으로 평가되는 표현식 입니다. Realm Mobile Sync(유연 모드)가 활성화되어 있지 않으면 App Services는 문서별로 역할을 할당합니다. Realm Mobile Sync(유연 모드)가 활성화되면 App Services는 collection별, 세션별로 즉, 클라이언트가 동기화 연결을 열 때 동기화된 각 collection에 대해 역할을 할당합니다. App Services는 역할을 할당하기 위해 역할이 참으로 평가될 때까지 각 잠재적 역할의 Realm Mobile Sync(유연 모드)가 활성화된 경우, 할당된 역할은 동기화와 호환 되어야 합니다. 역할이 동기화와 호환되지 않지만 | ||||||||
document_filters Document Default: undefined | 역할의 다른 권한을 평가할 수 있는지 여부를 결정하는 읽기 및 쓰기 표현식이 포함된 문서입니다. Realm Mobile Sync가 활성화된 경우 Realm Mobile Sync가 활성화되어 있지 않은 경우
| ||||||||
document_filters.read object? Default: undefined |
동기화 호환성 을 유지하려면 표현식을 정의해야 하며 쿼리 가능한 필드만 참조할 수 있습니다. | ||||||||
document_filters.write object? Default: undefined |
동기화 호환성 을 유지하려면 표현식을 정의해야 하며 쿼리 가능한 필드만 참조할 수 있습니다. | ||||||||
read object? Default: undefined | 역할에 문서의 모든 필드를 읽을 수 있는 권한이 있는 경우 참으로 평가되는 표현식 입니다. 동기화 호환성 을 유지하려면 표현식이 부울 리터럴( 문서 수준 읽기 권한은 모든 필드 수준 권한보다 우선 순위를 가집니다. 역할에 문서 수준 필드 수준 규칙과 함께 기본 대체를 정의하려면 | ||||||||
write object? Default: undefined | 역할에 문서의 모든 필드를 추가, 수정 또는 제거할 수 있는 권한이 있는 경우 참으로 평가되는 표현식 입니다. 동기화 호환성 을 유지하려면 표현식이 부울 리터럴( 문서 수준 쓰기 권한은 모든 필드 수준 권한보다 우선합니다. 역할에 문서 수준 필드 수준 규칙과 함께 기본 대체를 정의하려면
중요암시적 읽기 권한역할에 특정 범위에 대한 | ||||||||
insert object? Default: true | 역할에 새 document를 collection에 삽입할 수 있는 권한이 있는 경우 App Services는 삽입 작업에 대해 그리고 역할에 새 문서의 모든 필드에 대한 | ||||||||
delete object? Default: true | 역할에 collection에서 문서를 삭제할 수 있는 권한이 있는 경우 true로 평가되는 표현식 입니다. App Services는 삭제 작업에 대해 그리고 역할에 삭제할 문서의 모든 필드에 대한 | ||||||||
search Boolean Default: true | 역할에 Atlas Search를 사용하여 컬렉션 Atlas Search에 대한 권한이 있는 경우 true로 평가되는 표현식 입니다 Atlas Search 중요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는 문서를 읽기 전에 필터를 평가하고 적용하므로 필터의 적용 시기 표현식에서 MongoDB 문서 확장을 사용할 수 없습니다. 그러나 | |
query object Default: {} | Atlas App Services가 필터링된 작업의 기존 쿼리에 병합하는 MongoDB 쿼리 입니다. 예시필터는 다음 쿼리를 사용하여 미만의 가 있는 문서를 보류합니다.
| |
projection object Default: {} | Atlas App Services가 필터링된 작업의 기존 프로젝션에 병합하는 MongoDB 프로젝션 입니다. 중요프로젝션 충돌MongoDB 프로젝션은 포괄적 또는 배타적일 수 있습니다. 즉, 지정된 필드만 반환하거나 지정되지 않은 필드를 보류할 수 있습니다. 쿼리에 여러 필터가 적용되는 경우 필터가 모두 동일한 유형의 프로젝션을 지정해야 하며, 그렇지 않으면 쿼리가 실패합니다. 예시필터는 다음 프로젝션을 사용하여 모든 문서에서
|