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.
System-Generated Cluster Users
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>
Transactional Locks
App Services se conecta a clústeres estándar de MongoDB Atlas, lo que significa que es posible conectarse directamente a un clúster vinculado utilizando otra herramienta, como la mongosh shell o MongoDB Compass. No existen 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 se utiliza la shell de mongosh para actualizar documentos en la colección de productos, el 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
You can read from the __realm_sync.unsynced_documents collection, but you should not modify it in any way.
If Device Sync is paused due to hitting the 100,000 unsyncable document limit, you have two options:
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.
Considera 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" } } }; Someone adds a document directly to the
petscollection using a MongoDB driver, MongoDB compass, or an Atlas Function running in "system" mode. The document'sagefield contains a string, not a number, which does not match your app's schema. MongoDB does not natively enforce your app's schema, so it allows the insert without a warning or error.{ "_id": "5ae782e48f25b9dc5c51c4a5", "type": "dog", "name": "Fido", "age": "7" } Una vez insertado, el documento falla la validación de esquema en tu aplicación y no puede sincronizarse. La aplicación almacena el fallo 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.