Cloud Firestore — это NoSQL-база данных, ориентированная на документы. В отличие от SQL-базы данных, здесь нет таблиц или строк. Вместо этого данные хранятся в документах , которые организованы в коллекции .
Каждый документ содержит набор пар ключ-значение. Cloud Firestore оптимизирован для хранения больших коллекций небольших документов.
Все документы должны храниться в коллекциях. Документы могут содержать подколлекции и вложенные объекты, которые могут включать в себя как примитивные поля, такие как строки, так и сложные объекты, такие как списки.
В Cloud Firestore коллекции и документы создаются автоматически. Просто присвойте данные документу в коллекции. Если коллекция или документ не существуют, Cloud Firestore создаст их.
Документы
В Cloud Firestore единицей хранения является документ. Документ представляет собой облегченную запись, содержащую поля, которые сопоставляются со значениями. Каждый документ идентифицируется именем.
Документ, представляющий пользовательское alovelace может выглядеть следующим образом:
аловелайс
first : "Ada"
last : "Lovelace"
born : 1815
Сложные, вложенные объекты в документе называются картами. Например, имя пользователя из приведенного выше примера можно структурировать с помощью карты следующим образом:
аловелайс
name :
first : "Ada"
last : "Lovelace"
born : 1815
Вы можете заметить, что документы очень похожи на JSON. Фактически, они ими и являются. Есть некоторые различия (например, документы поддерживают дополнительные типы данных и ограничены размером документа ), но в целом вы можете рассматривать документы как облегченные записи JSON.
Коллекции

Документы хранятся в коллекциях, которые представляют собой просто контейнеры для документов. Например, у вас может быть коллекция users , содержащая различных пользователей, каждый из которых представлен отдельным документом:
users
аловелайс
first : "Ada"
last : "Lovelace"
born : 1815first : "Alan"
last : "Turing"
born : 1912
Cloud Firestore is schemaless, so you have complete freedom over what fields you put in each document and what data types you store in those fields. Documents within the same collection can all contain different fields or store different types of data in those fields. However, it's a good idea to use the same fields and data types across multiple documents, so that you can query the documents more easily.
Коллекция содержит только документы и ничего больше. Она не может напрямую содержать поля со значениями и не может содержать другие коллекции. (См. раздел «Иерархические данные» для объяснения того, как структурировать более сложные данные в Cloud Firestore .)
Названия документов в коллекции уникальны. Вы можете указать собственные ключи, например, идентификаторы пользователей, или позволить Cloud Firestore автоматически создавать для вас случайные идентификаторы.
Нет необходимости «создавать» или «удалять» коллекции. После создания первого документа в коллекции она продолжает существовать. Если удалить все документы в коллекции, она перестанет существовать.
Ссылки
Каждый документ в Cloud Firestore однозначно идентифицируется по своему местоположению в базе данных. В предыдущем примере был показан документ alovelace в коллекции users . Чтобы сослаться на это местоположение в вашем коде, вы можете создать на него ссылку .
Web
import { doc } from "firebase/firestore"; const alovelaceDocumentRef = doc(db, 'users', 'alovelace');
Web
var alovelaceDocumentRef = db.collection('users').doc('alovelace');
Быстрый
let alovelaceDocumentRef = db.collection("users").document("alovelace")
Objective-C
FIRDocumentReference *alovelaceDocumentRef = [[self.db collectionWithPath:@"users"] documentWithPath:@"alovelace"];
Kotlin
val alovelaceDocumentRef = db.collection("users").document("alovelace")
Java
DocumentReference alovelaceDocumentRef = db.collection("users").document("alovelace");
Dart
final alovelaceDocumentRef = db.collection("users").doc("alovelace");
Java
Python
Python
C++
DocumentReference alovelace_document_reference = db->Collection("users").Document("alovelace");
Node.js
Идти
PHP
PHP
Для получения дополнительной информации об установке и создании клиента Cloud Firestore см. раздел «Библиотеки клиентов Cloud Firestore .
Единство
DocumentReference documentRef = db.Collection("users").Document("alovelace");
C#
C#
Для получения дополнительной информации об установке и создании клиента Cloud Firestore см. раздел «Библиотеки клиентов Cloud Firestore .
Руби
Ссылка — это легковесный объект, который просто указывает на местоположение в вашей базе данных. Вы можете создать ссылку независимо от того, существуют ли там данные, и создание ссылки не выполняет никаких сетевых операций.
Вы также можете создавать ссылки на коллекции :
Web
import { collection } from "firebase/firestore"; const usersCollectionRef = collection(db, 'users');
Web
var usersCollectionRef = db.collection('users');
Быстрый
let usersCollectionRef = db.collection("users")
Objective-C
FIRCollectionReference *usersCollectionRef = [self.db collectionWithPath:@"users"];
Kotlin
val usersCollectionRef = db.collection("users")
Java
CollectionReference usersCollectionRef = db.collection("users");
Dart
final usersCollectionRef = db.collection("users");
Java
Python
Python
C++
CollectionReference users_collection_reference = db->Collection("users");
Node.js
Идти
PHP
PHP
Для получения дополнительной информации об установке и создании клиента Cloud Firestore см. раздел «Библиотеки клиентов Cloud Firestore .
Единство
CollectionReference collectionRef = db.Collection("users");
C#
C#
Для получения дополнительной информации об установке и создании клиента Cloud Firestore см. раздел «Библиотеки клиентов Cloud Firestore .
Руби
Для удобства вы также можете создавать ссылки, указывая путь к документу или коллекции в виде строки, где компоненты пути разделены косой чертой ( / ). Например, чтобы создать ссылку на документ alovelace :
Web
import { doc } from "firebase/firestore"; const alovelaceDocumentRef = doc(db, 'users/alovelace');
Web
var alovelaceDocumentRef = db.doc('users/alovelace');
Быстрый
let aLovelaceDocumentReference = db.document("users/alovelace")
Objective-C
FIRDocumentReference *aLovelaceDocumentReference = [self.db documentWithPath:@"users/alovelace"];
Kotlin
val alovelaceDocumentRef = db.document("users/alovelace")
Java
DocumentReference alovelaceDocumentRef = db.document("users/alovelace");
Dart
final aLovelaceDocRef = db.doc("users/alovelace");
Java
Python
Python
C++
DocumentReference alovelace_document = db->Document("users/alovelace");
Node.js
Идти
PHP
PHP
Для получения дополнительной информации об установке и создании клиента Cloud Firestore см. раздел «Библиотеки клиентов Cloud Firestore .
Единство
DocumentReference documentRef = db.Document("users/alovelace");
C#
C#
Для получения дополнительной информации об установке и создании клиента Cloud Firestore см. раздел «Библиотеки клиентов Cloud Firestore .
Руби
Иерархические данные
Чтобы понять, как работают иерархические структуры данных в Cloud Firestore , рассмотрим пример чат-приложения с сообщениями и чат-комнатами.
Вы можете создать коллекцию под названием rooms для хранения различных чатов:
комнаты
комнатаА
name : "my chat room"комнатаB
...
Теперь, когда у вас есть чаты, решите, как хранить ваши сообщения. Возможно, вы не захотите хранить их в документе чата. Документы в Cloud Firestore должны быть легковесными, а чат может содержать большое количество сообщений. Однако вы можете создавать дополнительные коллекции внутри документа чата в качестве подколлекций.
Подколлекции
В этом сценарии наилучший способ хранения сообщений — использование подколлекций. Подколлекция — это коллекция, связанная с конкретным документом.
Для каждого документа комнаты в вашей коллекции rooms можно создать подколлекцию с именем messages :
комнаты
комнатаА
name : "my chat room"сообщения
сообщение1
from : "alex"
msg : "Hello World!"сообщение2
...
комнатаB
...
В этом примере вы создадите ссылку на сообщение в подколлекции с помощью следующего кода:
Web
import { doc } from "firebase/firestore"; const messageRef = doc(db, "rooms", "roomA", "messages", "message1");
Web
var messageRef = db.collection('rooms').doc('roomA') .collection('messages').doc('message1');
Быстрый
let messageRef = db .collection("rooms").document("roomA") .collection("messages").document("message1")
Objective-C
FIRDocumentReference *messageRef = [[[[self.db collectionWithPath:@"rooms"] documentWithPath:@"roomA"] collectionWithPath:@"messages"] documentWithPath:@"message1"];
Kotlin
val messageRef = db .collection("rooms").document("roomA") .collection("messages").document("message1")
Java
DocumentReference messageRef = db .collection("rooms").document("roomA") .collection("messages").document("message1");
Dart
final messageRef = db .collection("rooms") .doc("roomA") .collection("messages") .doc("message1");
Java
Python
Python
C++
DocumentReference message_reference = db->Collection("rooms") .Document("roomA") .Collection("messages") .Document("message1");
Node.js
Идти
PHP
PHP
Для получения дополнительной информации об установке и создании клиента Cloud Firestore см. раздел «Библиотеки клиентов Cloud Firestore .
Единство
DocumentReference documentRef = db .Collection("Rooms").Document("RoomA") .Collection("Messages").Document("Message1");
C#
C#
Для получения дополнительной информации об установке и создании клиента Cloud Firestore см. раздел «Библиотеки клиентов Cloud Firestore .
Руби
Обратите внимание на чередование коллекций и документов. Ваши коллекции и документы всегда должны следовать этому шаблону. Вы не можете ссылаться на коллекцию внутри коллекции или на документ внутри документа.
Вложенные коллекции позволяют структурировать данные иерархически, упрощая доступ к ним. Чтобы получить все сообщения в roomA , можно создать ссылку на коллекцию messages вложенной коллекции и взаимодействовать с ней так же, как и с любой другой ссылкой на коллекцию.
Документы в подколлекциях могут содержать и подколлекции, что позволяет создавать еще более вложенные структуры данных. Вложенность данных может достигать 100 уровней.
,Cloud Firestore — это NoSQL-база данных, ориентированная на документы. В отличие от SQL-базы данных, здесь нет таблиц или строк. Вместо этого данные хранятся в документах , которые организованы в коллекции .
Каждый документ содержит набор пар ключ-значение. Cloud Firestore оптимизирован для хранения больших коллекций небольших документов.
Все документы должны храниться в коллекциях. Документы могут содержать подколлекции и вложенные объекты, которые могут включать в себя как примитивные поля, такие как строки, так и сложные объекты, такие как списки.
В Cloud Firestore коллекции и документы создаются автоматически. Просто присвойте данные документу в коллекции. Если коллекция или документ не существуют, Cloud Firestore создаст их.
Документы
В Cloud Firestore единицей хранения является документ. Документ представляет собой облегченную запись, содержащую поля, которые сопоставляются со значениями. Каждый документ идентифицируется именем.
Документ, представляющий пользовательское alovelace может выглядеть следующим образом:
аловелайс
first : "Ada"
last : "Lovelace"
born : 1815
Сложные, вложенные объекты в документе называются картами. Например, имя пользователя из приведенного выше примера можно структурировать с помощью карты следующим образом:
аловелайс
name :
first : "Ada"
last : "Lovelace"
born : 1815
Вы можете заметить, что документы очень похожи на JSON. Фактически, они ими и являются. Есть некоторые различия (например, документы поддерживают дополнительные типы данных и ограничены размером документа ), но в целом вы можете рассматривать документы как облегченные записи JSON.
Коллекции

Документы хранятся в коллекциях, которые представляют собой просто контейнеры для документов. Например, у вас может быть коллекция users , содержащая различных пользователей, каждый из которых представлен отдельным документом:
users
аловелайс
first : "Ada"
last : "Lovelace"
born : 1815first : "Alan"
last : "Turing"
born : 1912
Cloud Firestore is schemaless, so you have complete freedom over what fields you put in each document and what data types you store in those fields. Documents within the same collection can all contain different fields or store different types of data in those fields. However, it's a good idea to use the same fields and data types across multiple documents, so that you can query the documents more easily.
Коллекция содержит только документы и ничего больше. Она не может напрямую содержать поля со значениями и не может содержать другие коллекции. (См. раздел «Иерархические данные» для объяснения того, как структурировать более сложные данные в Cloud Firestore .)
Названия документов в коллекции уникальны. Вы можете указать собственные ключи, например, идентификаторы пользователей, или позволить Cloud Firestore автоматически создавать для вас случайные идентификаторы.
Нет необходимости «создавать» или «удалять» коллекции. После создания первого документа в коллекции она продолжает существовать. Если удалить все документы в коллекции, она перестанет существовать.
Ссылки
Каждый документ в Cloud Firestore однозначно идентифицируется по своему местоположению в базе данных. В предыдущем примере был показан документ alovelace в коллекции users . Чтобы сослаться на это местоположение в вашем коде, вы можете создать на него ссылку .
Web
import { doc } from "firebase/firestore"; const alovelaceDocumentRef = doc(db, 'users', 'alovelace');
Web
var alovelaceDocumentRef = db.collection('users').doc('alovelace');
Быстрый
let alovelaceDocumentRef = db.collection("users").document("alovelace")
Objective-C
FIRDocumentReference *alovelaceDocumentRef = [[self.db collectionWithPath:@"users"] documentWithPath:@"alovelace"];
Kotlin
val alovelaceDocumentRef = db.collection("users").document("alovelace")
Java
DocumentReference alovelaceDocumentRef = db.collection("users").document("alovelace");
Dart
final alovelaceDocumentRef = db.collection("users").doc("alovelace");
Java
Python
Python
C++
DocumentReference alovelace_document_reference = db->Collection("users").Document("alovelace");
Node.js
Идти
PHP
PHP
Для получения дополнительной информации об установке и создании клиента Cloud Firestore см. раздел «Библиотеки клиентов Cloud Firestore .
Единство
DocumentReference documentRef = db.Collection("users").Document("alovelace");
C#
C#
Для получения дополнительной информации об установке и создании клиента Cloud Firestore см. раздел «Библиотеки клиентов Cloud Firestore .
Руби
Ссылка — это легковесный объект, который просто указывает на местоположение в вашей базе данных. Вы можете создать ссылку независимо от того, существуют ли там данные, и создание ссылки не выполняет никаких сетевых операций.
Вы также можете создавать ссылки на коллекции :
Web
import { collection } from "firebase/firestore"; const usersCollectionRef = collection(db, 'users');
Web
var usersCollectionRef = db.collection('users');
Быстрый
let usersCollectionRef = db.collection("users")
Objective-C
FIRCollectionReference *usersCollectionRef = [self.db collectionWithPath:@"users"];
Kotlin
val usersCollectionRef = db.collection("users")
Java
CollectionReference usersCollectionRef = db.collection("users");
Dart
final usersCollectionRef = db.collection("users");
Java
Python
Python
C++
CollectionReference users_collection_reference = db->Collection("users");
Node.js
Идти
PHP
PHP
Для получения дополнительной информации об установке и создании клиента Cloud Firestore см. раздел «Библиотеки клиентов Cloud Firestore .
Единство
CollectionReference collectionRef = db.Collection("users");
C#
C#
Для получения дополнительной информации об установке и создании клиента Cloud Firestore см. раздел «Библиотеки клиентов Cloud Firestore .
Руби
Для удобства вы также можете создавать ссылки, указывая путь к документу или коллекции в виде строки, где компоненты пути разделены косой чертой ( / ). Например, чтобы создать ссылку на документ alovelace :
Web
import { doc } from "firebase/firestore"; const alovelaceDocumentRef = doc(db, 'users/alovelace');
Web
var alovelaceDocumentRef = db.doc('users/alovelace');
Быстрый
let aLovelaceDocumentReference = db.document("users/alovelace")
Objective-C
FIRDocumentReference *aLovelaceDocumentReference = [self.db documentWithPath:@"users/alovelace"];
Kotlin
val alovelaceDocumentRef = db.document("users/alovelace")
Java
DocumentReference alovelaceDocumentRef = db.document("users/alovelace");
Dart
final aLovelaceDocRef = db.doc("users/alovelace");
Java
Python
Python
C++
DocumentReference alovelace_document = db->Document("users/alovelace");
Node.js
Идти
PHP
PHP
Для получения дополнительной информации об установке и создании клиента Cloud Firestore см. раздел «Библиотеки клиентов Cloud Firestore .
Единство
DocumentReference documentRef = db.Document("users/alovelace");
C#
C#
Для получения дополнительной информации об установке и создании клиента Cloud Firestore см. раздел «Библиотеки клиентов Cloud Firestore .
Руби
Иерархические данные
Чтобы понять, как работают иерархические структуры данных в Cloud Firestore , рассмотрим пример чат-приложения с сообщениями и чат-комнатами.
Вы можете создать коллекцию под названием rooms для хранения различных чатов:
комнаты
комнатаА
name : "my chat room"комнатаB
...
Теперь, когда у вас есть чаты, решите, как хранить ваши сообщения. Возможно, вы не захотите хранить их в документе чата. Документы в Cloud Firestore должны быть легковесными, а чат может содержать большое количество сообщений. Однако вы можете создавать дополнительные коллекции внутри документа чата в качестве подколлекций.
Подколлекции
В этом сценарии наилучший способ хранения сообщений — использование подколлекций. Подколлекция — это коллекция, связанная с конкретным документом.
Для каждого документа комнаты в вашей коллекции rooms можно создать подколлекцию с именем messages :
комнаты
комнатаА
name : "my chat room"сообщения
сообщение1
from : "alex"
msg : "Hello World!"сообщение2
...
комнатаB
...
В этом примере вы создадите ссылку на сообщение в подколлекции с помощью следующего кода:
Web
import { doc } from "firebase/firestore"; const messageRef = doc(db, "rooms", "roomA", "messages", "message1");
Web
var messageRef = db.collection('rooms').doc('roomA') .collection('messages').doc('message1');
Быстрый
let messageRef = db .collection("rooms").document("roomA") .collection("messages").document("message1")
Objective-C
FIRDocumentReference *messageRef = [[[[self.db collectionWithPath:@"rooms"] documentWithPath:@"roomA"] collectionWithPath:@"messages"] documentWithPath:@"message1"];
Kotlin
val messageRef = db .collection("rooms").document("roomA") .collection("messages").document("message1")
Java
DocumentReference messageRef = db .collection("rooms").document("roomA") .collection("messages").document("message1");
Dart
final messageRef = db .collection("rooms") .doc("roomA") .collection("messages") .doc("message1");
Java
Python
Python
C++
DocumentReference message_reference = db->Collection("rooms") .Document("roomA") .Collection("messages") .Document("message1");
Node.js
Идти
PHP
PHP
Для получения дополнительной информации об установке и создании клиента Cloud Firestore см. раздел «Библиотеки клиентов Cloud Firestore .
Единство
DocumentReference documentRef = db .Collection("Rooms").Document("RoomA") .Collection("Messages").Document("Message1");
C#
C#
Для получения дополнительной информации об установке и создании клиента Cloud Firestore см. раздел «Библиотеки клиентов Cloud Firestore .
Руби
Обратите внимание на чередование коллекций и документов. Ваши коллекции и документы всегда должны следовать этому шаблону. Вы не можете ссылаться на коллекцию внутри коллекции или на документ внутри документа.
Вложенные коллекции позволяют структурировать данные иерархически, упрощая доступ к ним. Чтобы получить все сообщения в roomA , можно создать ссылку на коллекцию messages вложенной коллекции и взаимодействовать с ней так же, как и с любой другой ссылкой на коллекцию.
Документы в подколлекциях могут содержать и подколлекции, что позволяет создавать еще более вложенные структуры данных. Вложенность данных может достигать 100 уровней.
,Cloud Firestore — это NoSQL-база данных, ориентированная на документы. В отличие от SQL-базы данных, здесь нет таблиц или строк. Вместо этого данные хранятся в документах , которые организованы в коллекции .
Каждый документ содержит набор пар ключ-значение. Cloud Firestore оптимизирован для хранения больших коллекций небольших документов.
Все документы должны храниться в коллекциях. Документы могут содержать подколлекции и вложенные объекты, которые могут включать в себя как примитивные поля, такие как строки, так и сложные объекты, такие как списки.
В Cloud Firestore коллекции и документы создаются автоматически. Просто присвойте данные документу в коллекции. Если коллекция или документ не существуют, Cloud Firestore создаст их.
Документы
В Cloud Firestore единицей хранения является документ. Документ представляет собой облегченную запись, содержащую поля, которые сопоставляются со значениями. Каждый документ идентифицируется именем.
Документ, представляющий пользовательское alovelace может выглядеть следующим образом:
аловелайс
first : "Ada"
last : "Lovelace"
born : 1815
Сложные, вложенные объекты в документе называются картами. Например, имя пользователя из приведенного выше примера можно структурировать с помощью карты следующим образом:
аловелайс
name :
first : "Ada"
last : "Lovelace"
born : 1815
Вы можете заметить, что документы очень похожи на JSON. Фактически, они ими и являются. Есть некоторые различия (например, документы поддерживают дополнительные типы данных и ограничены размером документа ), но в целом вы можете рассматривать документы как облегченные записи JSON.
Коллекции

Документы хранятся в коллекциях, которые представляют собой просто контейнеры для документов. Например, у вас может быть коллекция users , содержащая различных пользователей, каждый из которых представлен отдельным документом:
users
аловелайс
first : "Ada"
last : "Lovelace"
born : 1815first : "Alan"
last : "Turing"
born : 1912
Cloud Firestore is schemaless, so you have complete freedom over what fields you put in each document and what data types you store in those fields. Documents within the same collection can all contain different fields or store different types of data in those fields. However, it's a good idea to use the same fields and data types across multiple documents, so that you can query the documents more easily.
Коллекция содержит только документы и ничего больше. Она не может напрямую содержать поля со значениями и не может содержать другие коллекции. (См. раздел «Иерархические данные» для объяснения того, как структурировать более сложные данные в Cloud Firestore .)
Названия документов в коллекции уникальны. Вы можете указать собственные ключи, например, идентификаторы пользователей, или позволить Cloud Firestore автоматически создавать для вас случайные идентификаторы.
Нет необходимости «создавать» или «удалять» коллекции. После создания первого документа в коллекции она продолжает существовать. Если удалить все документы в коллекции, она перестанет существовать.
Ссылки
Каждый документ в Cloud Firestore однозначно идентифицируется по своему местоположению в базе данных. В предыдущем примере был показан документ alovelace в коллекции users . Чтобы сослаться на это местоположение в вашем коде, вы можете создать на него ссылку .
Web
import { doc } from "firebase/firestore"; const alovelaceDocumentRef = doc(db, 'users', 'alovelace');
Web
var alovelaceDocumentRef = db.collection('users').doc('alovelace');
Быстрый
let alovelaceDocumentRef = db.collection("users").document("alovelace")
Objective-C
FIRDocumentReference *alovelaceDocumentRef = [[self.db collectionWithPath:@"users"] documentWithPath:@"alovelace"];
Kotlin
val alovelaceDocumentRef = db.collection("users").document("alovelace")
Java
DocumentReference alovelaceDocumentRef = db.collection("users").document("alovelace");
Dart
final alovelaceDocumentRef = db.collection("users").doc("alovelace");
Java
Python
Python
C++
DocumentReference alovelace_document_reference = db->Collection("users").Document("alovelace");
Node.js
Идти
PHP
PHP
Для получения дополнительной информации об установке и создании клиента Cloud Firestore см. раздел «Библиотеки клиентов Cloud Firestore .
Единство
DocumentReference documentRef = db.Collection("users").Document("alovelace");
C#
C#
Для получения дополнительной информации об установке и создании клиента Cloud Firestore см. раздел «Библиотеки клиентов Cloud Firestore .
Руби
Ссылка — это легковесный объект, который просто указывает на местоположение в вашей базе данных. Вы можете создать ссылку независимо от того, существуют ли там данные, и создание ссылки не выполняет никаких сетевых операций.
Вы также можете создавать ссылки на коллекции :
Web
import { collection } from "firebase/firestore"; const usersCollectionRef = collection(db, 'users');
Web
var usersCollectionRef = db.collection('users');
Быстрый
let usersCollectionRef = db.collection("users")
Objective-C
FIRCollectionReference *usersCollectionRef = [self.db collectionWithPath:@"users"];
Kotlin
val usersCollectionRef = db.collection("users")
Java
CollectionReference usersCollectionRef = db.collection("users");
Dart
final usersCollectionRef = db.collection("users");
Java
Python
Python
C++
CollectionReference users_collection_reference = db->Collection("users");
Node.js
Идти
PHP
PHP
Для получения дополнительной информации об установке и создании клиента Cloud Firestore см. раздел «Библиотеки клиентов Cloud Firestore .
Единство
CollectionReference collectionRef = db.Collection("users");
C#
C#
Для получения дополнительной информации об установке и создании клиента Cloud Firestore см. раздел «Библиотеки клиентов Cloud Firestore .
Руби
Для удобства вы также можете создавать ссылки, указывая путь к документу или коллекции в виде строки, где компоненты пути разделены косой чертой ( / ). Например, чтобы создать ссылку на документ alovelace :
Web
import { doc } from "firebase/firestore"; const alovelaceDocumentRef = doc(db, 'users/alovelace');
Web
var alovelaceDocumentRef = db.doc('users/alovelace');
Быстрый
let aLovelaceDocumentReference = db.document("users/alovelace")
Objective-C
FIRDocumentReference *aLovelaceDocumentReference = [self.db documentWithPath:@"users/alovelace"];
Kotlin
val alovelaceDocumentRef = db.document("users/alovelace")
Java
DocumentReference alovelaceDocumentRef = db.document("users/alovelace");
Dart
final aLovelaceDocRef = db.doc("users/alovelace");
Java
Python
Python
C++
DocumentReference alovelace_document = db->Document("users/alovelace");
Node.js
Идти
PHP
PHP
Для получения дополнительной информации об установке и создании клиента Cloud Firestore см. раздел «Библиотеки клиентов Cloud Firestore .
Единство
DocumentReference documentRef = db.Document("users/alovelace");
C#
C#
Для получения дополнительной информации об установке и создании клиента Cloud Firestore см. раздел «Библиотеки клиентов Cloud Firestore .
Руби
Иерархические данные
Чтобы понять, как работают иерархические структуры данных в Cloud Firestore , рассмотрим пример чат-приложения с сообщениями и чат-комнатами.
Вы можете создать коллекцию под названием rooms для хранения различных чатов:
комнаты
комнатаА
name : "my chat room"комнатаB
...
Теперь, когда у вас есть чаты, решите, как хранить ваши сообщения. Возможно, вы не захотите хранить их в документе чата. Документы в Cloud Firestore должны быть легковесными, а чат может содержать большое количество сообщений. Однако вы можете создавать дополнительные коллекции внутри документа чата в качестве подколлекций.
Подколлекции
В этом сценарии наилучший способ хранения сообщений — использование подколлекций. Подколлекция — это коллекция, связанная с конкретным документом.
Для каждого документа комнаты в вашей коллекции rooms можно создать подколлекцию с именем messages :
комнаты
комнатаА
name : "my chat room"сообщения
сообщение1
from : "alex"
msg : "Hello World!"сообщение2
...
комнатаB
...
В этом примере вы создадите ссылку на сообщение в подколлекции с помощью следующего кода:
Web
import { doc } from "firebase/firestore"; const messageRef = doc(db, "rooms", "roomA", "messages", "message1");
Web
var messageRef = db.collection('rooms').doc('roomA') .collection('messages').doc('message1');
Быстрый
let messageRef = db .collection("rooms").document("roomA") .collection("messages").document("message1")
Objective-C
FIRDocumentReference *messageRef = [[[[self.db collectionWithPath:@"rooms"] documentWithPath:@"roomA"] collectionWithPath:@"messages"] documentWithPath:@"message1"];
Kotlin
val messageRef = db .collection("rooms").document("roomA") .collection("messages").document("message1")
Java
DocumentReference messageRef = db .collection("rooms").document("roomA") .collection("messages").document("message1");
Dart
final messageRef = db .collection("rooms") .doc("roomA") .collection("messages") .doc("message1");
Java
Python
Python
C++
DocumentReference message_reference = db->Collection("rooms") .Document("roomA") .Collection("messages") .Document("message1");
Node.js
Идти
PHP
PHP
Для получения дополнительной информации об установке и создании клиента Cloud Firestore см. раздел «Библиотеки клиентов Cloud Firestore .
Единство
DocumentReference documentRef = db .Collection("Rooms").Document("RoomA") .Collection("Messages").Document("Message1");
C#
C#
Для получения дополнительной информации об установке и создании клиента Cloud Firestore см. раздел «Библиотеки клиентов Cloud Firestore .
Руби
Обратите внимание на чередование коллекций и документов. Ваши коллекции и документы всегда должны следовать этому шаблону. Вы не можете ссылаться на коллекцию внутри коллекции или на документ внутри документа.
Вложенные коллекции позволяют структурировать данные иерархически, упрощая доступ к ним. Чтобы получить все сообщения в roomA , можно создать ссылку на коллекцию messages вложенной коллекции и взаимодействовать с ней так же, как и с любой другой ссылкой на коллекцию.
Документы в подколлекциях могут содержать и подколлекции, что позволяет создавать еще более вложенные структуры данных. Вложенность данных может достигать 100 уровней.