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 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
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.
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" } } }; 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.