В таблицах ниже перечислены поддерживаемые типы данных, драйверы и сторонние инструменты MongoDB для Cloud Firestore.
Типы данных
| Тип BSON | Поддерживается |
|---|---|
| 32-битное целое число | Да |
| 64-битное целое число | Да |
| Массив | Да |
| Двоичные данные | Да |
| Логическое значение | Да |
| Дата | Да |
| DBPointer | Нет |
| Decimal128 | Да |
| Двуспальная | Да |
| JavaScript | Нет |
| JavaScript (с областью видимости) | Нет |
| MaxKey | Да |
| MinKey | Да |
| Null | Да |
| Объект | Да |
| ObjectId | Да |
| Регулярное выражение | Да |
| Строка | Да |
| Символ | Нет |
| Временная метка | Да |
| Не определено | Нет |
Документ _id
Поле _id верхнего уровня в документе должно относиться к одному из следующих типов:
- ObjectId
- Строка
- 64-битное целое число
- 32-битное целое число
- Двуспальная
- Исполняемый файл
- Объект
- Логическое значение
Общий размер _id не должен превышать 1500 байт.
Каждое значение в идентификаторе типа Object также должно быть поддерживаемым типом идентификатора или массивом значений, каждое из которых является поддерживаемым типом идентификатора.
Другие типы BSON не поддерживаются.
Языки и драйверы MongoDB
Cloud Firestore поддерживает следующие версии драйверов:
| Язык | Версии драйверов |
|---|---|
| Java | 5.x |
| Node.js | 6.x 5.x |
| Python | 4.x 3.x (x ≥ 12) |
| Проложить маршрут | 2.x |
| C# | 3.x |
| Ruby | 2.x (x ≥ 16) |
Поддержка аутентификации OIDC
Драйверы Go, C# и Ruby поддерживают аутентификацию OpenID Connect (OIDC) из Google Cloud для всех поддерживаемых версий драйверов.
Драйверы Java, Node.js и Python поддерживают аутентификацию OIDC из Google Cloud, начиная со следующих версий:
- Java: 4.10
- Node.js: 6.7
- Python: 4.7
Инструменты сторонних разработчиков
Cloud Firestore поддерживает сторонние инструменты, описанные в этом разделе.
| Инструмент | Описание | Примечания |
|---|---|---|
| mongoimport | MongoDB Database Tools | Подробнее о массовой загрузке данных … |
| mongoexport | MongoDB Database Tools | |
| mongodump | MongoDB Database Tools | |
| mongorestore | MongoDB Database Tools | Подробнее о массовой загрузке данных … |
| mongosh | MongoDB Shell | |
| Mongoose | Инструмент моделирования объектов MongoDB | |
| MongoDB Compass | Инструмент с графическим интерфейсом для исследования данных |
Совместимость типов BSON и Cloud Firestore
В этом разделе описывается сопоставление типов MongoDB BSON и значений Cloud Firestore. Поскольку BSON – это двоичный формат, а в Cloud Firestore API используются буферы протокола, некоторые типы сопоставляются напрямую, а для других требуются специальные представления.
Обзор сопоставления
В таблицах ниже показано, как типы данных BSON соответствуют представлениям буфера протокола Cloud Firestore.
Прямые сопоставления
У этих типов есть прямые эквиваленты в обеих системах.
| Тип BSON | BSON | Cloud Firestore Proto | Примечания |
|---|---|---|---|
| Double | 1.23 |
double_value: 1.23 |
|
| Строка | "hello" |
string_value: "hello" |
|
| Object | { |
map_value { |
|
| Array | [ |
array_value { |
|
| Binary (Subtype Zero) | 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 { |
Значения временных меток Cloud Firestore хранятся с точностью до микросекунд, но при преобразовании в BSON точность выше миллисекунд теряется. |
Типы BSON, представленные в виде карт в Cloud Firestore API
Эти типы BSON упакованы в Cloud Firestore map_value со специальными ключами для обозначения типа.
| Тип BSON | BSON | Cloud Firestore Proto | Примечания |
|---|---|---|---|
| 32-битное целое число | 123 |
map_value { |
|
| Двоичный (ненулевой подтип) | BinData(1, 'AQIDBA==') |
map_value { |
Байт подтипа, добавленный в начало данных. |
| ObjectId | ObjectId('67eea9446dc71ec469e9496a') |
map_value { |
Шестнадцатеричная строка в нижнем регистре. |
| Временная метка (внутренняя) | Timestamp(123, 1) |
map_value { |
Внутренняя временная метка MongoDB. |
| Регулярное выражение | RegExp('.*', 'im') |
map_value { |
|
| Min Key | MinKey() |
map_value { |
|
| Max Key | MaxKey() |
map_value { |
|
| Decimal128 | Decimal128('4E7') |
map_value { |
Cloud Firestore типов, не поддерживаемых в BSON
При преобразовании в BSON эти типы Cloud Firestore представляются в виде карт со специальной структурой.
| Тип Cloud Firestore | BSON | Cloud Firestore Proto |
|---|---|---|
| GeoPoint | { |
geo_point_value { |
| Векторные изображения | { |
map_value { |
| Document Ref | { |
reference_value: "projects/.../documents/col/doc" |
Названия полей
Названия полей из MongoDB, которые соответствуют __.*__, экранируются путем включения r: при хранении в Cloud Firestore. Например, поле BSON __foo__ в Cloud Firestore преобразуется в __r:foo__.
Типы данных BSON в клиентских SDK
При использовании клиентских SDK Cloud Firestore вы можете использовать специализированные классы SDK для представления типов данных BSON, таких как 128-битные десятичные числа, регулярные выражения и временные метки 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
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);
Проложить маршрут
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 }
Дальнейшие действия
- Выполните инструкции из краткого руководства по созданию базы данных и подключению к ней.
- Подробнее о различиях в поведении…
- Поддерживаемые функции в зависимости от версии MongoDB: