
Firestore MongoDB互換の要点まとめ#
- Googleが「Firestore with MongoDB compatibility」を
発表
- MongoDB用ドライバやMQL(MongoDB Query Language)をそのまま使ってFirestoreを操作可能
- Firestoreのスケーラブルな基盤の上にMongoDB互換レイヤーを構築
- 現時点ではEnterpriseエディションのPreview機能
仕組み#
- MongoDBクエリをFirestore内部クエリに変換する互換APIレイヤーを提供
collection.find() などのMongoDBドライバ呼び出しをそのまま利用可能- MongoDB→Firestoreへのクエリ変換処理で、未対応や制限付きの演算子が存在
- Firestoreのインデックス構造に基づいて最適化されるが、MongoDBとは挙動が異なる
クエリ互換性#
- 基本的なクエリ(比較、論理、範囲、配列など)は概ね対応
- 複雑なAggregation Pipeline、ジオクエリ、テキスト検索(
$text)などは未対応または制限あり $regex など一部の正規表現検索は動作する可能性があるが完全な互換ではない$where、$lookupなどのサーバーサイドスクリプト・結合系クエリは非対応
like検索・部分一致#
- MongoDBでは
$regex で部分一致検索が可能 - Firestoreネイティブでは前方一致(prefix検索)のみ対応
- MongoDB互換モードでも正規表現機能は一部制限あり
- 任意の位置一致や複雑な正規表現検索は非対応または非推奨
制限・注意点#
- 現時点でPreview段階のためAPI変更の可能性あり
- MongoDBすべての演算子を網羅していない
- Firestore独自のクエリ制限(フィルター数上限など)は引き継がれる
- 同一クエリでもMongoDBより遅くなるケースあり(インデックス構造差による)
- リアルタイム更新やオフライン対応などFirestore特有の機能との完全互換は未実装
利用上の位置づけ#
- MongoDBからFirestoreへの移行を容易にするための互換レイヤー
- 機能完全再現ではなく、移行コスト低減が主目的
- 高度な全文検索や結合が必要な場合はMongoDB本体を利用すべき
Refs#
comments powered by