サポートされている MongoDB データ型とドライバ

次の表に、MongoDB 互換の Firestore でサポートされている MongoDB のデータ型、ドライバ、サードパーティ ツールを示します。

データ型

BSON 型 サポート対象
32 ビット整数 ○
64 ビット整数 ○
配列 ○
バイナリデータ ○
ブール値 ○
日付 ○
DBPointer いいえ
Decimal128 ○
Double ○
JavaScript ×
JavaScript(スコープ付き) ×
MaxKey ○
MinKey ○
Null ○
オブジェクト ○
ObjectId ○
正規表現 ○
文字列 ○
記号 ×
タイムスタンプ ○
未定義 ×

ドキュメント _id

ドキュメントのトップレベルの _id フィールドは、次のいずれかの型にする必要があります。

  • ObjectId
  • 文字列
  • 64 ビット整数
  • 32 ビット整数
  • Double
  • バイナリ
  • オブジェクト
  • ブール値

_id の合計サイズは 1,500 バイト以下にする必要があります。

Object 型の ID 内の各値は、サポートされている ID 型または値の配列(各値はサポートされている ID 型)である必要があります。

他の BSON 型はサポートされていません。

言語と MongoDB ドライバ

MongoDB 互換の Firestore は、次のバージョンのドライバをサポートしています。

言語 ドライバのバージョン
Java 5.x
Node.js 6.x
5.x
Python 4.x
3.x (x ≥ 12)
Go 2.x
C# 3.x
Ruby 2.x (x ≥ 16)

OIDC 認証のサポート

Go、C#、Ruby のドライバは、サポートされているすべてのドライバ バージョンで、Google Cloud からの OpenID Connect(OIDC)認証をサポートしています。

Java、Node.js、Python ドライバは、次のドライバ バージョン以降で、Google Cloud からの OIDC 認証をサポートしています。

  • Java: 4.10
  • Node.js: 6.7
  • Python: 4.7

サードパーティ製ツール

MongoDB 互換の Firestore は、このセクションに記載されているサードパーティ ツールをサポートしています。

ツール 説明 注
mongoimport MongoDB データベース ツール データの一括読み込み をご覧ください。
mongoexport MongoDB データベース ツール
mongodump MongoDB データベース ツール
mongorestore MongoDB データベース ツール データの一括読み込み をご覧ください。
mongosh MongoDB シェル
Mongoose MongoDB オブジェクト モデリング ツール
MongoDB Compass データ探索用の GUI ツール

BSON と Firestore の型の互換性

このセクションでは、MongoDB BSON タイプと Firestore 値のマッピングの概要について説明します。BSON はバイナリ形式であり、Firestore API はプロトコル バッファを使用するため、一部の型は直接マッピングされますが、他の型は特別なマップ表現が必要です。

マッピングの概要

次の表に、BSON データ型と Firestore プロトコル バッファ表現の対応関係を示します。

直接マッピング

これらの型は、両方のシステムで直接対応する型があります。

BSON 型 BSON Firestore Proto メモ
倍精度 1.23 double_value: 1.23
文字列 "hello" string_value: "hello"
オブジェクト
{
"a": 1.23
}
map_value {
fields {
key: "a"
value {
double_value: 1.23
}
}
}
配列
[
1.23,
"a"
]
array_value {
values {
double_value: 1.23
}
values {
string_value: "a"
}
}
バイナリ(サブタイプ 0) BinData(0, 'SGVsbG8=') bytes_value: "Hello"
ブール値 true boolean_value: true
Null null null_value: NULL_VALUE
64 ビット整数 Long('1234567890') integer_value: 1234567890
日付 ISODate('2026-05-22T04:00:00Z')
timestamp_value {
seconds: 1779470400
nanos: 0
}
Firestore のタイムスタンプ値はマイクロ秒単位の精度で保存されますが、BSON に変換するとミリ秒単位の精度を超える部分は失われます。

Firestore API でマップとして表される BSON 型

これらの BSON タイプは、タイプを示す特別なキーとともに Firestore map_value にラップされます。

BSON 型 BSON Firestore Proto メモ
32 ビット整数 123
map_value {
fields {
key: "__int__"
value {
integer_value: 123
}
}
}
バイナリ(ゼロ以外のサブタイプ) BinData(1, 'AQIDBA==')
map_value {
fields {
key: "__binary__"
value {
bytes_value: "<subtype + data>"
}
}
}
データの先頭に付加されるサブタイプ バイト。
ObjectId ObjectId('67eea9446dc71ec469e9496a')
map_value {
fields {
key: "__oid__"
value {
string_value:
"67eea9446dc71ec469e9496a"
}
}
}
小文字の 16 進文字列。
タイムスタンプ(社内向け) Timestamp(123, 1)
map_value {
fields {
key: "__request_timestamp__"
value {
map_value {
fields {
key: "seconds"
value {
integer_value: 123
}
}
fields {
key: "increment"
value {
integer_value: 1
}
}
}
}
}
}
MongoDB の内部タイムスタンプ。
正規表現 RegExp('.*', 'im')
map_value {
fields {
key: "__regex__"
value {
map_value {
fields {
key: "pattern"
value {
string_value: ".*"
}
}
fields {
key: "options"
value {
string_value: "im"
}
}
}
}
}
}
最小キー MinKey()
map_value {
fields {
key: "__min__"
value {
null_value: NULL_VALUE
}
}
}
最大キー MaxKey()
map_value {
fields {
key: "__max__"
value {
null_value: NULL_VALUE
}
}
}
Decimal128 Decimal128('4E7')
map_value {
fields {
key: "__decimal128__"
value {
string_value: "4E7"
}
}
}

BSON にネイティブに存在しない Firestore の型

これらの Firestore 型は、BSON に変換されると、特別に構造化されたマップとして表されます。

Firestore のタイプ BSON Firestore Proto
GeoPoint
{
"__fs_geopoint__": {
"latitude": 37.42,
"longitude": -122.08
}
}
geo_point_value {
latitude: 37.42
longitude: -122.08
}
ベクトル
{
"__fs_vector__": [
1.0,
2.0
]
}
map_value {
fields {
key: "__type__"
value {
string_value: "__vector__"
}
}
fields {
key: "value"
value {
array_value {
...
}
}
}
}
ドキュメント参照
{
"__fs_ref__": "projects/.../documents/col/doc"
}
reference_value: "projects/.../documents/col/doc"

フィールド名

__.*__ と一致する MongoDB のフィールド名は、Firestore に保存されるときに r: を組み込むことでエスケープされます。たとえば、BSON フィールド __foo__ は Firestore で __r:foo__ になります。

クライアント SDK の BSON データ型

Firestore クライアント SDK を使用する場合は、専用の SDK クラスを使用して、128 ビットの 10 進数、正規表現、BSON タイムスタンプなどの BSON データ型を表すことができます。

Node.js
const { RegexValue, Decimal128Value, BsonTimestamp } = require('@google-cloud/firestore');

// Setting fields with BSON data types
const res = await db.collection('foo').doc('bar').set({
  regex: new RegexValue('myRegexPattern', 'i'),
  decimal: new Decimal128Value('0.73e-7'),
  bsonTimestamp: new BsonTimestamp(1732754912, 500),
});
    
Java
import com.google.cloud.firestore.BsonTimestamp;
import com.google.cloud.firestore.Decimal128Value;
import com.google.cloud.firestore.RegexValue;
import java.util.HashMap;
import java.util.Map;

Map<String, Object> data = new HashMap<>();
data.put("regex", new RegexValue("myRegexPattern", "i"));
data.put("decimal", new Decimal128Value("0.73e-7"));
data.put("bson_timestamp", new BsonTimestamp(1732754912, 500));

db.collection("foo").doc("bar").set(data);
    
Java
Android
import com.google.firebase.firestore.BsonTimestamp;
import com.google.firebase.firestore.Decimal128Value;
import com.google.firebase.firestore.RegexValue;
import java.util.HashMap;
import java.util.Map;

Map<String, Object> data = new HashMap<>();
data.put("regex", new RegexValue("myRegexPattern", "i"));
data.put("decimal", new Decimal128Value("0.73e-7"));
data.put("bson_timestamp", new BsonTimestamp(1732754912, 500));

db.collection("foo").doc("bar").set(data);
    
Go
import (
    "context"

    "cloud.google.com/go/firestore"
)

func writeBsonTypes(ctx context.Context, client *firestore.Client) error {
    _, err := client.Collection("foo").Doc("bar").Set(ctx, map[string]interface{}{
        "regex":     firestore.RegexValue{Pattern: "myRegexPattern", Options: "i"},
        "decimal":   firestore.Decimal128Value{Value: "0.73e-7"},
        "bson_timestamp": firestore.BsonTimestamp{Seconds: 1732754912, Increment: 500},
    })
    return err
}
    

次のステップ