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.
Usuarios de clúster generados por el sistema
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>
Bloqueos transaccionales
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: "" } } )
Documentos no sincronizados
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:
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:
Una aplicación tiene una colección
petscon el siguiente esquema:{ "title": "Pet", "required": ["_id", "type", "name", "age"], "properties": { "_id": { "bsonType: "objectId" }, "type": { "bsonType: "string" }, "name": { "bsonType: "string" }, "age": { "bsonType: "int" } } }; Alguien añade un documento directamente a la colección
petsmediante un controlador MongoDB, MongoDB Compass o una función Atlas en modo "sistema". El campoagedel 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" } 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.