サポートされるデータタイプ

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

データ型

次の表に、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 バイトのみがクエリによって考慮されます。
日時 時系列 Firestore に保存した場合、精度はマイクロ秒までになり、それより下の桁は切り捨てられます。
浮動小数点数 数値 64 ビット倍精度、IEEE 754
地理的座標 緯度、経度の順 クエリの制限により、現時点ではこのデータ型の使用はおすすめしません。通常は、緯度と経度を個別の数値フィールドとして保存するほうが適切です。アプリで距離ベースのシンプルなジオクエリが必要な場合は、ジオクエリを参照してください。
整数 数値 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"}

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

値の型の順序付け

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

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