app/ └── data_sources/ └── <service name>/ ├── config.json └── <database>/ └── <collection>/ ├── schema.json ├── relationships.json └── rules.json
Configuración del Servicio
Clústeres de MongoDB
{ "name": "<Service Name>", "type": "mongodb-atlas", "config": { "clusterName": "<Atlas Cluster Name>", "readPreference": "<Read Preference>", "wireProtocolEnabled": <Boolean> } }
Campo | Descripción | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
namestring | Obligatorio. Predeterminado: El nombre del servicio utilizado para referirse al clúster dentro de esta aplicación Atlas App Services. El nombre puede tener un máximo de 64 caracteres y solo debe contener letras ASCII, números, guiones bajos y guiones. | ||||||||||||
typestring | Obligatorio. Para los clústeres de MongoDB Atlas, este valor siempre es | ||||||||||||
config.clusterNamestring | Obligatorio. El nombre del clúster en Atlas. | ||||||||||||
config.readPreferencestring | El modo de preferencia de lectura para las consultas enviadas a través del servicio.
| ||||||||||||
config.wireProtocolEnabledBoolean | Si |
Instancias de bases de datos federadas
{ "name": "<Service Name>", "type": "datalake", "config": { "dataLakeName": "<Federated database instance name>" } }
Campo | Descripción |
|---|---|
namestring | Obligatorio. Predeterminado: El nombre del servicio utilizado para referirse a la instancia de base de datos federada dentro de esta aplicación de Servicios de Aplicaciones. El nombre puede tener un máximo de 64 caracteres y solo debe contener letras ASCII, números, guiones bajos y guiones. |
typestring | Obligatorio. Para una instancia de base de datos federada, este valor siempre es |
config.dataLakeNamestring | Obligatorio. El nombre de la instancia de base de datos federada en Atlas. |
Bases de datos y colecciones
Esquema de colección
Si desea aplicar un esquema a una colección, defina un schema.json archivo de configuración que contenga un esquema JSON para los documentos. El esquema de nivel raíz debe ser un esquema de objeto, con el siguiente formato:
{ "title": "<Object Type Name>", "bsonType": "object", "properties": { "<Property Name>": { <Schema> }, ... } }
Relaciones
{ "<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> }, ... }
Campo | Descripción | |
|---|---|---|
refstring | Una cadena | |
source_keystring | El nombre del campo en el esquema de esta colección que especifica qué documentos de la colección externa se incluirán en la relación. Se incluye un documento externo si | |
foreign_keystring | El nombre del campo en el esquema de la colección externa que contiene el valor al que hace referencia | |
is_listBoolean | Si es Si es |
Ejemplo
Una aplicación de comercio electrónico define una relación entre dos colecciones: cada documento de store.orders hace referencia a uno o más documentos de la colección store.items al incluir los valores del artículo _id en la matriz items del pedido. Ambas colecciones se encuentran en el mismo clúster vinculado (mongodb-atlas) y base de datos (store).
La relación se define para la colección orders:
{ "items": { "ref": "#/relationship/mongodb-atlas/store/items", "source_key": "items", "foreign_key": "_id", "is_list": true } }
Reglas predeterminadas
Puede definir reglas predeterminadas que se apliquen a todas las colecciones de una fuente de datos que no tengan reglas de nivel de colección más específicas definidas.
Defina reglas por defecto en el archivo de configuración default_rule.json de la fuente de datos en data_sources/<data-source-name>/default_rule.json.
{ "roles": [<Role>], "filters": [<Filter>] }
Reglas de colección
Si la fuente de datos no es una fuente de datos federada, puede definir reglas a nivel de colección en el rules.json archivo de configuración de una colección.
{ "database": "<Database Name>", "collection": "<Collection Name>", "roles": [<Role>], "filters": [<Filter>] }
Configuraciones de reglas
Roles
{ "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 } } }
Campo | Descripción | ||||||||
|---|---|---|---|---|---|---|---|---|---|
namestring | El nombre del rol. Los nombres de rol identifican y distinguen entre roles de la misma colección. Limitado a 100 caracteres o menos. | ||||||||
apply_whenobject | Una expresión que se evalúa como verdadera cuando este rol se aplica a un usuario. Cuando la Sincronización de Dispositivos (Modo Flexible) no está habilitada, App Services asigna un rol por documento. Cuando la Sincronización de Dispositivos (Modo Flexible) está habilitada, App Services asigna roles por colección y por sesión; es decir, por cada colección sincronizada cuando un cliente abre una conexión de sincronización. Para asignar un rol, App Services evalúa el Si la sincronización de dispositivos (modo flexible) está habilitada, los roles asignados deben ser compatibles con la sincronización. Si el rol no es compatible con la sincronización, pero su | ||||||||
document_filtersDocument Default: undefined | Un documento con expresiones de lectura y escritura que determinan si se pueden evaluar otros permisos del rol. Si la sincronización de dispositivos está habilitada, Si la sincronización del dispositivo no está habilitada, | ||||||||
document_filters.readobject?Default: undefined | Una expresión que especifica Para mantener la compatibilidad de Sync, la expresión debe estar definida y solo puede hacer referencia a campos consultables. | ||||||||
document_filters.writeobject?Default: undefined | Una expresión que especifica Para mantener la compatibilidad de Sync, la expresión debe estar definida y solo puede hacer referencia a campos consultables. | ||||||||
readobject?Default: undefined | Una expresión que se evalúa como verdadera si el rol tiene permiso para leer todos los campos del documento. Para mantener la compatibilidad con Sync, la expresión debe ser un literal booleano ( Los permisos de lectura a nivel de documento tienen prioridad sobre cualquier permiso a nivel de campo. Si un rol tiene permisos a nivel de documento Para definir una alternativa predeterminada junto con las reglas a nivel de campo, deje | ||||||||
writeobject?Default: undefined | Una expresión que evalúa como verdadera si el rol tiene permiso para agregar, modificar o remover todos los campos del documento. Para mantener la compatibilidad con Sync, la expresión debe ser un literal booleano ( Los permisos de escritura a nivel de documento tienen prioridad sobre los permisos a nivel de campo. Si un rol tiene permisos a nivel de documento Para definir una alternativa predeterminada junto con las reglas a nivel de campo, deje Puede utilizar expansiones como ImportantePermiso de lectura implícitoCada vez que un rol tiene permiso | ||||||||
insertobject?Default: true | Una expresión que evalúa a App Services solo evalúa esta expresión para operaciones de inserción y solo después de determinar que el rol tiene permiso | ||||||||
deleteobject?Default: true | Una expresión que se evalúa como verdadera si el rol tiene permiso para eliminar un documento de la colección. App Services solo evalúa esta expresión para las operaciones de eliminación y solo después de determinar que el rol tiene permiso de | ||||||||
searchBoolean Default: true | Una expresión que se evalúa como verdadera si el rol tiene permiso para buscar en la colección mediante Atlas Search. ImportanteServicios de aplicaciones realiza | ||||||||
fieldsDocument Default: {} | Un documento donde cada clave corresponde a un nombre de campo y cada valor define los permisos de nivel de campo Para mantener la compatibilidad de Sync, las NotaPrioridad del permisoLos permisos | ||||||||
fields.<Field Name>.readobject?Default: false | Una expresión que se evalúa como verdadera si el rol tiene permiso para leer el campo. Para mantener la compatibilidad con Sync, la expresión debe ser un literal booleano ( | ||||||||
fields.<Field Name>.writeobject?Default: false | Una expresión que se evalúa como verdadera si el rol tiene permiso para agregar, modificar o eliminar el campo. Para mantener la compatibilidad con Sync, la expresión debe ser un literal booleano ( | ||||||||
fields.<Field Name>.fieldsDocument Default: {} | Un documento Consulte el patrón de función Permisos a nivel de campo para documentos incrustados para obtener más información. | ||||||||
additional_fieldsDocument Default: {} | Un documento que define los permisos de nivel de campo Para mantener la compatibilidad de Sync, las | ||||||||
additional_fields.readobject?Default: false | Una expresión que se evalúa como verdadera si el rol tiene permiso para leer cualquier campo que no tenga una definición de permiso a nivel de campo Para mantener la compatibilidad con Sync, la expresión debe ser booleana ( | ||||||||
additional_fields.writeobject?Default: false | Una expresión que se evalúa como verdadera si el rol tiene permiso para agregar, modificar o eliminar cualquier campo que no tenga una definición de permiso a nivel de campo Para mantener la compatibilidad con Sync, la expresión debe ser booleana ( |
Filtros
{ "name": "<Filter Name>", "apply_when": { Expression }, "query": { MongoDB Query }, "projection": { MongoDB Projection } }
Campo | Descripción | |
|---|---|---|
namestring | Obligatorio. El nombre del filtro. Los nombres de los filtros son útiles para identificarlos y distinguirlos. Limitado a 100 caracteres o menos. | |
apply_whenobject | Una expresión que determina cuándo se aplica este filtro a una operación MongoDB entrante. ImportanteAtlas App Services evalúa y aplica filtros antes de leer cualquier documento, por lo que no se pueden usar expansiones de documentos de MongoDB en la expresión "Aplicar cuando" de un filtro. Sin embargo, sí se pueden usar otras expansiones | |
queryobjectDefault: {} | Una consulta de MongoDB que App Services fusiona en la consulta existente de una operación filtrada. EjemploUn filtro retiene documentos que tengan un | |
projectionobjectDefault: {} | Una proyección de MongoDB que App Services fusiona con la proyección existente de una operación filtrada. ImportanteConflictos de proyecciónLas proyecciones de MongoDB pueden ser inclusivas o exclusivas; es decir, pueden devolver solo los campos especificados o excluir los campos no especificados. Si se aplican varios filtros a una consulta, todos deben especificar el mismo tipo de proyección; de lo contrario, la consulta fallará. EjemploUn filtro retiene el campo |