サポートされるデータ型

このページでは、Cloud Firestore でサポートされるデータ型について説明します。

データ型

次の表に、Cloud Firestore でサポートされるデータ型を示します。同じ型の値を比較するときに使用される並べ替え順についても説明します。

データ型 並べ替え順 備考
配列 要素の値

配列の要素として他の配列値を格納することはできません。

配列内の各要素は、割り当てられた位置を保持します。複数の配列を並べ替える場合は、要素の値に基づいて順序が決定されます。

2 つの配列を比較する場合は、各配列の最初の要素が比較されます。最初の要素が等しい場合は、2 番目の要素が比較されます。以下同様にして、値の異なる要素が見つかるまで比較されます。比較する要素が配列内になくなり、その時点までの値が等しい場合は、短い配列の方が長い配列よりも順序が先になります。

例: [1, 2, 3] < [1, 2, 3, 1] < [2]。この場合、最初の要素の値が最大であるのは配列 [2] です。配列 [1, 2, 3] は、配列 [1, 2, 3, 1] と最初の 3 つの要素の値が同じであるものの、長さが短くなっています。

ブール値 false < true
バイト バイト順 最大 1,048,487 バイト(1 MiB - 89 バイト)。最初の 1,500 バイトのみがクエリによって考慮されます。
日時 時系列 Cloud Firestore に保存した場合、精度はマイクロ秒までになり、それより下の桁は切り捨てられます。
浮動小数点数 数値 IEEE 754 に準拠した 64 ビット倍精度で、(正規化された)NaN+/-Infinity を含む。
地理的座標 緯度、経度の順 クエリの制限により、現時点ではこのデータ型の使用はおすすめしません。通常は、緯度と経度を個別の数値フィールドとして保存するほうが適切です。アプリで距離ベースのシンプルなジオクエリが必要な場合は、ジオクエリを参照してください。
整数 数値 64 ビット、符号付き
地図 キー、次に値

ドキュメント内に埋め込まれたオブジェクトを表します。インデックス付けされている場合は、サブフィールドに対してクエリを実行できます。この値をインデックス付けから除外した場合、すべてのサブフィールドもインデックス付けから除外されます。

キーの順序は常に並べ替えられます。たとえば、{c: "foo", a: "bar", b: "qux"} と記述すると、マップはキーを基準に並べ替えられ、{a: "bar", b: "qux", c: "foo"} として保存されます。

マップ フィールドはキーを基準に並べ替えられ、Key-Value ペアにより比較されます(まずキーを比較してから値を比較します)。最初の Key-Value ペアが等しい場合は次の Key-Value ペアが比較され、これが順に行われます。2 つのマップ内の Key-Value ペアがすべて同じである場合は、マップの長さが考慮されます。たとえば、次のマップは昇順です。

{a: "aaa", b: "baz"}
{a: "foo", b: "bar"}
{a: "foo", b: "bar", c: "qux"}
{a: "foo", b: "baz"}
{b: "aaa", c: "baz"}
{c: "aaa"}

Null なし
リファレンス パス要素順(コレクション、ドキュメント ID、コレクション、ドキュメント ID...) 例: projects/[PROJECT_ID]/databases/[DATABASE_ID]/documents/[DOCUMENT_PATH]
テキスト文字列 UTF-8 でエンコードされたバイト順 最大 1,048,487 バイト(1 MiB - 89 バイト)。UTF-8 表現の最初の 1,500 バイトのみがクエリによって考慮されます。
Vector ディメンション順、次に個別の要素値の順 サポートされているエンべディング ディメンションの最大値は 2,048 です。次元が大きいベクトルを保存するには、次元削減を使用します。

値の型の順序付け

型が混合した値を持つフィールドをクエリで扱う場合は、Cloud Firestore によって内部表現に基づく決定論的な順序付けが使用されます。この順序は次のとおりです。

  1. Null 値
  2. ブール値
  3. 数値順に並べ替えられた整数値と浮動小数点値
  4. 日付の値
  5. テキスト文字列の値
  6. バイト値
  7. Cloud Firestore リファレンス
  8. 地理的座標値
  9. 配列値
  10. ベクトル エンベディング
  11. マップ値

数値の順序付け

Cloud Firestore は、すべての数値(IntegerFloating point)を相互にインターリーブして並べ替えます。浮動小数点の比較は IEEE 754 の総順序に従いますが、Cloud Firestore がすべての NaN 値を正規化し、-Infinity 未満と見なすという重要な例外があります。