動作の違い
このページでは、MongoDB 互換の Firestore と MongoDB の動作の違いについて説明します。MongoDB のバージョンに応じてサポートされている機能の詳細については、以下をご覧ください。
接続とデータベース
- 各接続は、MongoDB 互換データベースを使用する単一の Firestore に制限されます。
- データベースに接続する前に、データベースを作成する必要があります。
命名
データモデルの部分の命名には、次の違いがあります。
コレクション
__.*__
に一致するコレクション名はサポートされていません。
フィールド
__.*__
に一致するフィールド名はサポートされていません。- 空のフィールド名はサポートされていません。
ドキュメント
- ドキュメントの最大サイズは 4 MiB です。
- フィールドのネストの最大深度は 20 です。配列型とオブジェクト型の各フィールドは、全体的な深度を 1 レベル引き上げます。
_id
- ドキュメントの
_id
(トップレベル フィールド)は、ObjectId、文字列、64 ビット整数である必要があります。他の BSON タイプはサポートされていません。 - 空の文字列("")と 64 ビットの 0(0L)はサポートされていません。
値
- JavaScript、Symbol、DBPointer、Undefined の BSON タイプはサポートされていません。
日付
- 日付値は
[0001-01-01T00:00:00Z, 9999-12-31T23:59:59Z]
に収まる必要があります。
Decimal128
NaN
、正の無限大、負の無限大の値は、書き込み時に正規化されます。- Decimal128 の算術演算はサポートされていません。
Double
NaN
値は書き込み時に正規化されます。
正規表現
- 正規表現オプションは有効なもの(「i」、「m」、「s」、「u」、「x」)で、重複することなくアルファベット順に指定する必要があります。
クエリ
- 自然な並べ替え順序(明示的な並べ替えのないクエリ)が、挿入順序または
_id
昇順の並べ替え順序と一致しない。
集約
- 集計は 250 ステージに制限されています。
$merge
ステージと$out
ステージはサポートされていません。サポートされているステージと演算子の完全なリストについては、コマンドのセクションをご覧ください。
書き込み
- ドル記号($)で始まる名前のドキュメントは、
update
またはfindAndModify
のアップサート機能を使用して作成できません。 - ドライバがこの機能を使用しようとしないように、接続文字列に
retryWrites=false
を含めるか(またはドライバに適したメソッドを使用します)。再試行可能な書き込みはサポートされていません。
トランザクション
- スナップショット トランザクションはサポートされていません。
- トランザクションは、ロックを使用したペシミスティック同時実行制御を使用します。ロック競合を回避するには、トランザクションで読み取るデータの量を制限します。
インデックス
- ワイルドカード インデックスはサポートされていません。
- 一意のインデックスはサポートされていません
- MongoDB 互換の Firestore では、
_id
にインデックスが自動的に作成されることはありませんが、_id
の値がコレクション内で一意になることが保証されます。 - マルチキーが有効になっていないインデックスは、書き込みオペレーションに基づいてマルチキー インデックスに自動的に変更されません。インデックスを作成するときにマルチキーを有効にする必要があります。このオプションは変更できません。
読み取りに関する懸念
majority
読み取り関心レベルのみがサポートされています。
懸念事項を記入する
w: 'majority'
とw: 1
の書き込みに関する懸念のみがサポートされています。
読み取り設定
- サポートされるのは、
primary
、primaryPreferred
、primary_preferred
、secondary_preferred
、nearest
の読み取りコンソールのみです。
エラー
- エラーコードとメッセージは、MongoDB 互換の Firestore と MongoDB で異なる場合があります。
コマンド
次の動作の違いは、特定のコマンドに適用されます。
- 次の表に記載されていないコマンドはサポートされていません。
maxTimeMS
はほとんどのコマンドで使用できますが、無視されることもあります。
クエリと書き込み
コマンド | サポートされていないフィールド |
---|---|
|
|
|
|
|
|
|
|
|
delete ステートメント内:
|
|
|
|
|
|
|
|
|
|
(なし) |
トランザクションとセッション
コマンド | サポートされていないフィールド |
---|---|
|
|
|
|
|
(なし) |
管理
コマンド | サポートされていないフィールド | 注 |
---|---|---|
|
|
filter を指定する場合は空にする必要があります。 |
|
|
authorizedCollections を指定する場合は false にする必要があります。 |
|
|
|
|
|
このコマンドは no-op です。capped を指定する場合は false にする必要があります。 |
次のステップ
- クイックスタート: データベースを作成して接続するを実行します。
- サポートされている機能の一覧については、サポートされている MongoDB データ型、ドライバ、機能をご覧ください。