Docs Menu
Docs Home
/ /
Conectarse a fuentes de datos de MongoDB

Uso de la base de datos interna

Atlas App Services utiliza el clúster de MongoDB Atlas vinculado para gestionar algunas operaciones internas. Por lo general, no es necesario conocer estas operaciones para usar App Services.

App Services crea automáticamente un Usuario de MongoDB para cada aplicación vinculada a un clúster. Estos usuarios son solo para uso interno y no se pueden editar ni eliminar manualmente. Si elimina una aplicación, también se eliminará el usuario asociado.

Los usuarios generados por App Services tienen nombres con el formato: mongodb-realm-<your app id>

App Services se conecta a clústeres estándar de MongoDB Atlas, lo que significa que puede conectarse directamente a un clúster vinculado mediante otra herramienta, como Mongosh Shell o MongoDB Compass. No hay consideraciones especiales al leer datos de un clúster vinculado con otra herramienta.

Mientras ejecuta operaciones de actualización, aplicación Services añade temporalmente un campo reservado, _id__baas_transaction, a los documentos. Una vez que un documento se actualiza correctamente, aplicación Services elimina este campo. Si deseas usar otra herramienta para modificar los datos de una colección, asegúrate de $unset este campo antes de realizar cambios.

Por ejemplo, si está utilizando el shell mongosh para actualizar documentos en la colección de productos, su comando podría parecerse al siguiente código:

db.products.update(
{ sku: "unknown" },
{ $unset: { _id__baas_transaction: "" } }
)

Si un documento de una colección sincronizada no se ajusta al esquema de la colección, no se podrá sincronizar con las aplicaciones cliente. Si 100 hay,000 o más documentos no sincronizables, App Services deja de sincronizar con la aplicación.

App Services almacena información sobre documentos que no se pueden sincronizar en la colección __realm_sync.unsynced_documents.

Importante

Puedes leer desde la colección __realm_sync.unsynced_documents, pero no debes modificarla de ninguna manera.

Si la sincronización del dispositivo se pausa debido a que se alcanza el límite de documentos no sincronizables 100,000, tiene dos opciones:

  • terminar y volver a sincronizar.

  • Póngase en contacto con el soporte y solicite un aumento temporal en el límite de documentos no sincronizables.

Una causa común de documentos no sincronizables son los datos agregados o modificados fuera del contexto de su aplicación.

Consideremos el siguiente escenario:

  1. Una aplicación tiene una colección pets con el siguiente esquema:

    {
    "title": "Pet",
    "required": ["_id", "type", "name", "age"],
    "properties": {
    "_id": { "bsonType: "objectId" },
    "type": { "bsonType: "string" },
    "name": { "bsonType: "string" },
    "age": { "bsonType: "int" }
    }
    };
  2. Alguien añade un documento directamente a la colección pets mediante un controlador MongoDB, MongoDB Compass o una función Atlas en modo "sistema". El campo age del documento contiene una cadena, no un número, que no coincide con el esquema de la aplicación. MongoDB no aplica el esquema de la aplicación de forma nativa, por lo que permite la inserción sin advertencias ni errores.

    {
    "_id": "5ae782e48f25b9dc5c51c4a5",
    "type": "dog",
    "name": "Fido",
    "age": "7"
    }
  3. Una vez insertado, el documento no supera la validación del esquema en la aplicación y no se puede sincronizar. La aplicación almacena el error en la colección unsynced_documents:

    {
    "_id": "6183021879247167daacd8dc",
    "appId": "6183021373247568dcdcd3ed",
    "documentId": "5ae782e48f25b9dc5c51c4a5",
    "ns": {
    "db": "myDatabase",
    "coll": "pets"
    },
    "reason": "invalid schema"
    }
Resumen
Si sus datos son utilizados por clientes de sincronización, pero también pueden crearse o modificarse fuera de Atlas Device Sync, debe asegurarse de que dichas creaciones y modificaciones coincidan con el esquema de objetos definido en la colección. En el caso de los documentos que han fallado, puede reemplazarlos, actualizarlos o eliminarlos y volver a agregarlos.

Volver

Preimágenes del documento