内部データベースの使用
Atlas App Services は、リンクされた MongoDB Atlas クラスターを使用して、一部の内部操作を管理します。 一般に、App Services を使用するために、これらの操作について知っている必要はありません。
システム生成クラスター ユーザー
App Services では、クラスターにリンクされたアプリごとに MongoDB ユーザーが自動的に作成されます。 これらのユーザーは内部でのみ使用し、編集したり手動で削除したりすることはできません。 アプリを削除すると、関連付けられている ユーザーも削除されます。
App Services によって生成されたユーザーの名前は次の形式になります。
mongodb-realm-<your app id>
トランザクションのロック
App Services は標準の MongoDB Atlas クラスターに接続します。つまり、 mongosh shellや MongoDB Compass などの別のツールを使用して、リンクされたクラスターに直接接続できます。 別のツールを使用して連結クラスターからデータを読み取る場合、特別な考慮事項はありません。
アップデート操作の実行中に、App Services は予約フィールドである_id__baas_transaction
をドキュメントに一時的に追加します。 ドキュメントが正常に更新されると、App Services はこのフィールドを削除します。 コレクション内のデータを変更するために別のツールを使用する場合は、変更を行う前にこのフィールドを$unsetにしてください。
たとえば、 mongosh shell を使用して製品コレクション内のドキュメントを更新している場合、コマンドは次のコードのようになります。
db.products.update( { sku: "unknown" }, { $unset: { _id__baas_transaction: "" } } )
同期されていないドキュメント
同期されたコレクション内のドキュメントがコレクションのスキーマに準拠していない場合、クライアント アプリに同期することはできません。 100 、 000以上の同期できないドキュメントがある場合、App Services はアプリとの同期を停止します。
App Services は、同期できないドキュメントに関する情報を__realm_sync.unsynced_documents
コレクションに保存します。
重要
__realm_sync.unsynced_documents
コレクションから読み取ることはできますが、これは絶対に変更しないでください。
Device Sync が100 、 000の同期不可ドキュメント制限に達して一時停止された場合は、次の 2 つの選択肢があります。
サポートに連絡し、同期できないドキュメント数の一時的な増加をリクエストします。
同期できないドキュメントの一般的な原因は、アプリのコンテキスト外で追加または変更されたデータであることです。
次のシナリオを検討してみましょう。
アプリには、次のスキーマを持つ
pets
コレクションがあります。{ "title": "Pet", "required": ["_id", "type", "name", "age"], "properties": { "_id": { "bsonType: "objectId" }, "type": { "bsonType: "string" }, "name": { "bsonType: "string" }, "age": { "bsonType: "int" } } }; MongoDB ドライバー、MongoDB Compass、または「システム」モードで実行中の Atlas Function を使用して、
pets
コレクションにドキュメントを直接追加します。 ドキュメントのage
フィールドには数値ではなく string が含まれており、アプリのスキーマと一致しません。 MongoDB はアプリのスキーマをネイティブに強制しないため、警告やエラーなしで挿入を行えます。{ "_id": "5ae782e48f25b9dc5c51c4a5", "type": "dog", "name": "Fido", "age": "7" } 挿入されると、ドキュメントはアプリ内でのスキーマ検証に失敗し、同期できなくなります。 アプリはエラーを
unsynced_documents
コレクションに保存します。{ "_id": "6183021879247167daacd8dc", "appId": "6183021373247568dcdcd3ed", "documentId": "5ae782e48f25b9dc5c51c4a5", "ns": { "db": "myDatabase", "coll": "pets" }, "reason": "invalid schema" }
- 概要
- データが Sync クライアントによって使用されるが、Atlas Device Sync の外部で作成または変更される場合は、それらの作成と変更がコレクションに定義されたオブジェクト スキーマと一致していることを確認する必要があります。 失敗したドキュメントの場合は、各ドキュメントを置換、更新、または削除して再追加することができます。