サポートされているデータ型
このページでは、Firestore でサポートされるデータ型について説明します。
データ型
次の表に、Firestore でサポートされているデータ型を一覧表示します。同じ型の値を比較するときに使用される並べ替え順についても説明します。
| データ型 | 並べ替え順 | メモ |
|---|---|---|
| 32 ビットの整数 | 数値 |
32 ビット、符号付き 注: Enterprise エディションでのみサポートされています。 |
| 64 ビット整数 | 数値 | 64 ビット、符号付き |
| 配列 | 要素の値 |
Standard エディションのデータベースでは、配列の要素として別の配列値を含めることはできません。Enterprise エディションのデータベースでは、配列に配列値を要素として含めることができます。 配列内の各要素は、割り当てられた位置を保持します。複数の配列を並べ替える場合は、要素の値に基づいて順序が決定されます。 2 つの配列を比較する場合は、各配列の最初の要素が比較されます。最初の要素が等しい場合は、2 番目の要素が比較され、差異が見つかるまでこれが繰り返されます。比較する要素が配列内になくなり、その時点までの値が等しい場合は、短い配列の方が長い配列よりも順序が先になります。 例: |
| ブール値 | false < true |
— |
| BSON タイムスタンプ | 時系列 |
Unix 秒と増分カウンタで構成される 64 ビットのタイムスタンプ値。 注: Enterprise エディションでのみサポートされています。 |
| バイト | バイト順 | Standard エディションのデータベースでは、値は 1,048,487 バイト(1 MiB - 89 バイト)以下にする必要があります。クエリでは最初の 1,500 バイトのみが考慮されます。Enterprise エディションのデータベースでは、値のサイズに制限はありません(ドキュメントとインデックス エントリのサイズ制限を除く)。クエリでは、値全体が考慮されます。 |
| サブタイプを含むバイト数 | バイト順(サブタイプ、値) |
BSON サブタイプ インジケーターを含むバイナリ バイト シーケンス。 注: Enterprise エディションでのみサポートされています。 |
| 日時 | 時系列 | Firestore に保存した場合、精度はマイクロ秒までになり、それより下の桁は切り捨てられます。 |
| Decimal128 | 数値 |
高精度演算用の 128 ビット 10 進浮動小数点数。 注: Enterprise エディションでのみサポートされています。 |
| 浮動小数点数 | 数値 | IEEE 754 に準拠した 64 ビット倍精度で、(正規化された)NaN と +/-Infinity を含む。 |
| 地理的座標 | 緯度、経度の順 | 距離に基づいて検索するには、地理空間検索をご覧ください。 |
| 地図 | キー、次に値 | ドキュメント内に埋め込まれたオブジェクトを表します。インデックス付けされている場合は、サブフィールドに対してクエリを実行できます。この値をインデックス付けから除外した場合、すべてのサブフィールドもインデックス付けから除外されます。
キーの順序は常に並べ替えられます。たとえば、 マップ フィールドはキーを基準に並べ替えられ、Key-Value ペアにより比較されます(まずキーを比較してから値を比較します)。最初の Key-Value ペアが等しい場合は次の Key-Value ペアが比較され、違いが見つかるまでこれが順に行われます。2 つのマップに同じ Key-Value ペアがすべて含まれている場合は、マップの長さが考慮されます。たとえば、次のマップは昇順です。
|
| 最大キー | なし |
他のすべての値よりも大きい特別な値。 注: Enterprise エディションでのみサポートされています。 |
| Min key | なし |
他のすべての値(null を除く)よりも小さい値と比較される特別な値。 注: Enterprise エディションでのみサポートされています。 |
| Null | なし | — |
| ObjectId | バイト順 |
12 バイトのオブジェクト識別子。 注: Enterprise エディションでのみサポートされています。 |
| リファレンス | パス要素順(コレクション、ドキュメント ID、コレクション、ドキュメント ID...) | 例: projects/[PROJECT_ID]/databases/[DATABASE_ID]/documents/[DOCUMENT_PATH] |
| 正規表現 | パターン別、オプション別 |
正規表現パターンとオプション。 注: Enterprise エディションでのみサポートされています。 |
| テキスト文字列 | UTF-8 でエンコードされたバイト順 | Standard エディションのデータベースでは、値は 1,048,487 バイト(1 MiB - 89 バイト)以下にする必要があります。クエリでは最初の 1,500 バイトのみが考慮されます。Enterprise エディションのデータベースでは、値のサイズに制限はありません(ドキュメントとインデックス エントリのサイズ制限を除く)。クエリでは、値全体が考慮されます。 |
| ベクトル | ディメンション順、次に個別の要素値の順 | サポートされているエンべディング ディメンションの最大値は 2,048 です。次元が大きいベクトルを保存するには、次元削減を使用します。 |
値の型の順序付け
値の型が混在するフィールドをクエリで扱う場合、内部表現に基づく決定論的な順序付けが使用されます。この順序は次のとおりです。
- Null 値
- 最小キー値(Enterprise エディションのみ)
- ブール値
- 数値順に並べ替えられた 64 ビット整数値と浮動小数点値。Enterprise エディションのデータベースでは、32 ビット整数値と Decimal128 値も含まれます。
- 日付の値
- テキスト文字列の値
- バイト値。Enterprise エディションでは、サブタイプ値を持つバイトも含まれます。
- Firestore の参照
- ObjectId 値(Enterprise エディションのみ)
- 地理的座標値
- 正規表現(Enterprise エディションのみ)
- 配列値
- ベクトル エンベディング
- マップ値
- 最大 Key-Value(Enterprise エディションのみ)
数値の順序付け
Firestore は、すべての数値(Integer と Floating point)を相互にインターリーブして並べ替えます。浮動小数点比較は IEEE 754 の全順序に従います。ただし、注目すべき例外として、Firestore はすべての NaN 値を正規化し、-Infinity より小さいと見なします。