Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /
Archivos de configuración de la aplicación

Archivos de configuración de fuentes de datos de MongoDB

app/
└── data_sources/
└── <service name>/
├── config.json
└── <database>/
└── <collection>/
├── schema.json
├── relationships.json
└── rules.json
config.json
{
"name": "<Service Name>",
"type": "mongodb-atlas",
"config": {
"clusterName": "<Atlas Cluster Name>",
"readPreference": "<Read Preference>",
"wireProtocolEnabled": <Boolean>
}
}
Campo
Descripción
name
string

Obligatorio. Predeterminado: mongodb-atlas

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.

type
string

Required. For MongoDB Atlas clusters, this value is always "mongodb-atlas".

config.clusterName
string

Obligatorio. El nombre del clúster en Atlas.

config.readPreference
string

The read preference mode for queries sent through the service.

Modo
Descripción

primario

App Services dirige todas las operaciones de lectura al nodo principal del conjunto de réplicas actual. Este es el modo de preferencia de lectura predeterminado.

App Services dirige todas las operaciones de lectura al nodo principal del conjunto de réplicas actual, si está disponible. Si el nodo principal no está disponible, como durante una conmutación por error automática, las solicitudes de lectura se dirigen a un nodo secundario.

App Services asigna todas las operaciones de lectura a uno de los nodos secundariosactuales del set de réplicas.

App Services dirige todas las operaciones de lectura a uno de los nodos secundarios disponibles en el set de réplicas. Si no hay nodos secundarios disponibles, las solicitudes de lectura se dirigen al primario del set de réplicas.

App Services routes read operations to the replica set member that has the lowest network latency relative to the client.

config.wireProtocolEnabled
Boolean
/data_sources/<Service Name>/config.json
{
"name": "<Service Name>",
"type": "datalake",
"config": {
"dataLakeName": "<Federated database instance name>"
}
}
Campo
Descripción
name
string

Obligatorio. Predeterminado: mongodb-datafederation

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.

type
string

Obligatorio. Para una instancia de base de datos federada, este valor es siempre "datalake".

config.dataLakeName
string

Obligatorio. El nombre de la instancia de base de datos federada en Atlas.

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:

/data_sources/<data source>/<database>/<collection>/schema.json
{
"title": "<Object Type Name>",
"bsonType": "object",
"properties": {
"<Property Name>": { <Schema> },
...
}
}
/data_sources/<data source>/<database><collection>/<colección>/relaciones.json
{
"<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
ref
string

A JSON schema $ref string that specifies the foreign collection. The string has the following form:

#/relationship/<Data Source Name>/<Database Name>/<Collection Name>
source_key
string

El nombre del campo en el esquema de esta colección que especifica qué documentos de la colección externa incluir en la relación. Se incluye un documento externo si source_key contiene el valor de su campo foreign_key.

foreign_key
string

El nombre del campo en el esquema de la colección externa que contiene el valor al que hace referencia source_key.

is_list
Boolean

If true, the relationship may refer to multiple foreign documents (i.e. a "to-many" relationship). The source_key field must be an array with elements of the same type as the foreign_key field.

Si es false, la relación puede referirse a uno o ninguno de los documentos extranjeros (es decir, una relación "a uno"). El campo source_key debe ser del mismo tipo que el campo foreign_key.

Ejemplo

An ecommerce app defines a relationship between two collections: each document in store.orders references one or more documents in the store.items collection by including item _id values in the order's items array. Both collection are in the same linked cluster (mongodb-atlas) and database (store).

La relación se define para la colección orders:

/fuentes_de_datos/mongodb-atlas/tienda/pedidos/relaciones.json
{
"items": {
"ref": "#/relationship/mongodb-atlas/store/items",
"source_key": "items",
"foreign_key": "_id",
"is_list": true
}
}

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.

/data_sources/<data source>/default_rule.json
{
"roles": [<Role>],
"filters": [<Filter>]
}
Campo
Descripción
roles
Array<Role>

Un arreglo de configuraciones de rol.

filters
Array<Filter>

Una matriz de configuraciones de filtro.

If the data source is not a Federated data source, then you can define collection-level rules in a collection's rules.json configuration file.

/data_sources/<data source>/<database>/<collection>/rules.json
{
"database": "<Database Name>",
"collection": "<Collection Name>",
"roles": [<Role>],
"filters": [<Filter>]
}
Campo
Descripción
database
string

El nombre de la base de datos que contiene la colección.

collection
string

El nombre de la colección.

roles
Role[]

Un arreglo de configuraciones de rol.

filters
Filter[]

Una matriz de configuraciones de filtro.

{
"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
name
string

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_when
object

An expression that evaluates to true when this role applies to a user.

Cuando Device Sync (Modo Flexible) no está habilitado, App Services asigna un rol por documento. Cuando se habilita Device Sync (modo flexible), App Services asigna roles por colección y sesión, es decir, para cada colección sincronizada cuando un cliente abre una conexión de sincronización.

Para asignar un rol, App Services evalúa el apply_when de cada rol potencial hasta que uno se evalúa como verdadero. Los roles potenciales son cualquier rol especificado en el rules.json archivo de configuración para la colección dada o, si no rules.json se encuentra ningún archivo para la colección dada, los roles predeterminados. App Services evalúa los roles en el orden en que los especifique en su configuración. Si ningún rol coincide, se deniega el acceso. Para obtener más información, consulte Permisos basados ​​en roles.

Si la sincronización de dispositivos (Moda Flexible) está activada, los roles asignados deben ser compatibles con la sincronización. Si el rol no es compatible con sincronizar, pero su apply_when se evalúa como verdadero, no se consideran otros roles; se deniega el acceso.

document_filters
Document
Default: undefined

A document with read and write expressions that determine whether the role's other permissions may be evaluated.

Si la sincronización de dispositivos está habilitada,document_filters.read document_filters.write se deben definir y para que el rol sea compatible con la sincronización. Los roles incompatibles con la sincronización deniegan todo acceso a las solicitudes de sincronización.

Si Sync de dispositivos no está habilitado, document_filters, document_filters.read y document_filters.write son todos opcionales; una document_filters.read o document_filters.write indefinidos por defecto serán verdaderos, lo que permitirá que se evalúen los permisos posteriores.

"document_filters": {
"read": { Expression },
"write": { Expression }
}
document_filters.read
object?
Default: undefined

Una expresión que especifica read fields additional_fields si se pueden evaluar los permisos de lectura de, y. Si es falso (y document_filters.write no está definido o es falso), se deniega el acceso de lectura para todo el documento.

Para mantener la compatibilidad de Sync, la expresión debe estar definida y solo puede hacer referencia a campos consultables.

document_filters.write
object?
Default: undefined

Una expresión que especifica write fieldssi additional_fields se pueden evaluar los permisos de escritura de, y. Si es falso, se deniega el acceso de escritura a todo el documento.

Para mantener la compatibilidad de Sync, la expresión debe estar definida y solo puede hacer referencia a campos consultables.

read
object?
Default: undefined

An expression that evaluates to true if the role has permission to read all fields in the document.

Para mantener la compatibilidad con Sync, la expresión debe ser un literal booleano (true falseo).

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 read, este se aplica a todos los campos del documento. Los permisos de lectura especificados por fields o additional_fields no anulan los permisos a nivel de documento read.

Para definir una alternativa predeterminada junto con las reglas a nivel de campo, deje read sin definir y utilice additional_fields.

write
object?
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 (true falseo).

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 write, estos se aplican a todos los campos del documento. Los permisos de escritura especificados por fields o additional_fields no anulan los permisos a nivel de documento write.

Para definir una alternativa predeterminada junto con las reglas a nivel de campo, deje write sin definir y utilice additional_fields.

You can use expansions like %%root and %%prevRoot in write JSON expressions.

Importante

Permiso de lectura implícito

Cada vez que un rol tiene permiso write para un ámbito particular, también tiene permiso read incluso si este no está definido explícitamente.

insert
object?
Default: true

Una expresión que evalúa a true si el rol tiene permiso para insertar un nuevo documento en la colección.

App Services solo evalúa esta expresión para operaciones de inserción y solo después de determinar que el rol tiene permiso write para todos los campos en el nuevo documento.

delete
object?
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 write para todos los campos en el documento que se eliminarán.

search
Boolean
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.

Importante

App Services realiza $search operaciones como usuario del sistema e impone reglas a nivel de campo sobre los resultados de búsqueda devueltos. Esto significa que un usuario puede buscar en un campo al que no tiene acceso de lectura. En este caso, la búsqueda se basa en el campo especificado, pero ningún documento devuelto incluye el campo.

fields
Document
Default: {}

Un documento donde cada clave corresponde a un nombre de campo y cada valor define los permisos de nivel de campo read y write del rol para el campo correspondiente en un documento consultado.

Para mantener la compatibilidad de sincronización, las expresiones read y write internas deben ser literales booleanos (ya sea true o false).

"fields": {
"<Field Name>": {
"read": { Expression },
"write": { Expression },
"fields": <Fields Document>
},
...
}

Nota

Prioridad del permiso

Los permisos read o write a nivel de documento anulan todos los permisos a nivel de campo del mismo tipo. Si se definen permisos para un campo que contiene un documento incrustado, estos permisos anulan cualquier permiso definido para los campos incrustados del documento.

fields.<Field Name>.read
object?
Default: false

An expression that evaluates to true if the role has permission to read the field.

Para mantener la compatibilidad con Sync, la expresión debe ser un literal booleano (true falseo).

fields.<Field Name>.write
object?
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 (true falseo).

fields.<Field Name>.fields
Document
Default: {}

A fields document that defines read and write permissions for fields that are embedded within this field in a queried document.

Consulte el patrón de función Permisos a nivel de campo para documentos incrustados para obtener más información.

additional_fields
Document
Default: {}

Un documento que define los permisos de nivel de campo read y write del rol para cualquier campo en un documento consultado que no tenga permisos definidos explícitamente en el documento fields.

Para mantener la compatibilidad de sincronización, las expresiones read y write internas deben ser literales booleanos (ya sea true o false).

"additional_fields": {
"read": { Expression },
"write": { Expression }
}
additional_fields.read
object?
Default: false

An expression that evaluates to true if the role has permission to read any field that does not have a field-level permission definition in fields.

Para mantener la compatibilidad con Sync, la expresión debe ser booleana (true falseo).

additional_fields.write
object?
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 fields en.

Para mantener la compatibilidad con Sync, la expresión debe ser booleana (true falseo).

{
"name": "<Filter Name>",
"apply_when": { Expression },
"query": { MongoDB Query },
"projection": { MongoDB Projection }
}
Campo
Descripción
name
string

Requerido. El nombre del filtro. Los nombres de filtro son útiles para identificar y diferenciar los filtros. Limitado a 100 caracteres o menos.

apply_when
object

An expression that determines when this filter applies to an incoming MongoDB operation.

Importante

Atlas 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 %%user como, %%values y.%function

query
object
Default: {}

Una consulta de MongoDB que App Services fusiona en la consulta existente de una operación filtrada.

Ejemplo

Un filtro retiene documentos que tengan un score por debajo de 20 usando la siguiente query:

{ "score": { "$gte": 20 } }
projection
object
Default: {}

Una proyección de MongoDB que App Services fusiona con la proyección existente de una operación filtrada.

Importante

Conflictos de proyección

MongoDB projections can be either inclusive or exclusive, i.e. they can either return only specified fields or withhold fields that are not specified. If multiple filters apply to a query, the filters must all specify the same type of projection, or the query will fail.

Ejemplo

A filter withholds the _internal field from all documents using the following projection:

{ "_internal": 0 }

Volver

Usuarios y proveedores de autenticación

En esta página