Cloud Firestore to baza danych NoSQL zorientowana na dokumenty. W przeciwieństwie do bazy danych SQL brak tabel lub wierszy. Zamiast tego przechowujesz dane w dokumentach, które są są porządkowane w kolekcje.
Każdy dokument zawiera zestaw par klucz-wartość. Cloud Firestore to zoptymalizowane pod kątem przechowywania dużych kolekcji małych dokumentów.
Wszystkie dokumenty muszą być przechowywane w kolekcjach. Dokumenty mogą zawierać podkolekcje i obiekty zagnieżdżone, które mogą zawierać pola podstawowe np. ciągi tekstowe lub złożone obiekty, takie jak listy.
Kolekcje i dokumenty są tworzone domyślnie w usłudze Cloud Firestore. Po prostu przypisz dane do dokumentu w kolekcji. Jeśli żadna z tych opcji lub dokument nie istnieje, Cloud Firestore go tworzy.
Dokumenty
W systemie Cloud Firestore jednostką pamięci masowej jest dokument. Dokument to prosty rekord zawierający pola, które są mapowane na wartości. Każdy dokument jest które są rozpoznawane pod nazwą.
Dokument reprezentujący użytkownika alovelace
może wyglądać tak:
alovelace
first : "Ada"
last : "Lovelace"
born : 1815
Złożone, zagnieżdżone obiekty w dokumencie są nazywane mapami. Możesz na przykład: utwórz strukturę nazwy użytkownika z powyższego przykładu za pomocą mapy w następujący sposób:
alovelace
name :
first : "Ada"
last : "Lovelace"
born : 1815
Możesz zauważyć, że dokumenty wyglądają podobnie do JSON. W zasadzie tak właśnie są. Istnieją pewne różnice (np. dokumenty obsługują dodatkowe typy danych mogą nie przekraczać 1 MB), ale generalnie dokumenty można traktować jako lekkie rekordy JSON.
Kolekcje
Dokumenty znajdują się w kolekcjach, które są po prostu kontenerami na dokumenty. Dla:
możesz mieć np. kolekcję users
zawierającą różnych użytkowników, z których każdy
reprezentowane przez dokument:
użytkowników
alovelace
first : "Ada"
last : "Lovelace"
born : 1815
Zjazd
first : "Alan"
last : "Turing"
born : 1912
Funkcja Cloud Firestore jest nieschematyczna, więc masz pełną swobodę umieszczonych w każdym dokumencie oraz typy danych w nich przechowywanych. Dokumenty w tej samej kolekcji mogą zawierać różne pola lub przechowywać różne typy danych w tych polach. Warto jednak użyć atrybutu tych samych pól i typów danych w wielu dokumentach, dzięki czemu możesz wykonywać zapytania dokumenty.
Kolekcja zawiera dokumenty i nic więcej. Nie może zawierać bezpośrednio nieprzetworzonych danych pola z wartościami i nie może zawierać innych kolekcji. (Patrz sekcja Hierarchiczna dane wyjaśniające, w jaki sposób utworzyć bardziej złożoną strukturę. w tabeli Cloud Firestore.)
Nazwy dokumentów w kolekcji są unikalne. Możesz podać własne takich jak identyfikatory użytkowników, lub pozwolić aplikacji Cloud Firestore na tworzenie losowych identyfikatorów automatycznie.
Nie musisz tworzyć lub „usuń” kolekcji. Po utworzeniu pierwszego dokument w kolekcji, zbiór istnieje. Jeśli usuniesz wszystkie dokumentów w kolekcji, już nie istnieje.
Odniesienia
Każdy dokument w domenie Cloud Firestore jest jednoznacznie identyfikowany na podstawie lokalizacji
w bazie danych. W poprzednim przykładzie pokazaliśmy dokument alovelace
w obrębie
kolekcję users
. Aby odwołać się do tej lokalizacji w kodzie, możesz utworzyć
odwołania do nich.
Web
import { doc } from "firebase/firestore"; const alovelaceDocumentRef = doc(db, 'users', 'alovelace');
Web
var alovelaceDocumentRef = db.collection('users').doc('alovelace');
Swift
let alovelaceDocumentRef = db.collection("users").document("alovelace")
Objective-C
FIRDocumentReference *alovelaceDocumentRef = [[self.db collectionWithPath:@"users"] documentWithPath:@"alovelace"];
Kotlin+KTX
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
Go
PHP
PHP
Więcej informacji o instalowaniu i tworzeniu klienta Cloud Firestore znajdziesz tutaj: Biblioteki klienta Cloud Firestore.
Unity
DocumentReference documentRef = db.Collection("users").Document("alovelace");
C#
C#
Więcej informacji o instalowaniu i tworzeniu klienta Cloud Firestore znajdziesz tutaj: Biblioteki klienta Cloud Firestore.
Ruby
Plik referencyjny to nieduży obiekt, który wskazuje tylko w bazie danych. Możesz utworzyć odwołanie niezależnie od tego, czy dane w nim są, czy nie. utworzenie odwołania nie wykonuje żadnych operacji sieciowych.
Możesz też tworzyć odwołania do kolekcji:
Web
import { collection } from "firebase/firestore"; const usersCollectionRef = collection(db, 'users');
Web
var usersCollectionRef = db.collection('users');
Swift
let usersCollectionRef = db.collection("users")
Objective-C
FIRCollectionReference *usersCollectionRef = [self.db collectionWithPath:@"users"];
Kotlin+KTX
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
Go
PHP
PHP
Więcej informacji o instalowaniu i tworzeniu klienta Cloud Firestore znajdziesz tutaj: Biblioteki klienta Cloud Firestore.
Unity
CollectionReference collectionRef = db.Collection("users");
C#
C#
Więcej informacji o instalowaniu i tworzeniu klienta Cloud Firestore znajdziesz tutaj: Biblioteki klienta Cloud Firestore.
Ruby
Dla wygody możesz także tworzyć odwołania, podając ścieżkę do pliku
dokument lub kolekcja w postaci ciągu znaków, z komponentami ścieżki rozdzielonymi znakiem przekierowania
ukośnik (/
). Aby na przykład utworzyć odwołanie do dokumentu alovelace
:
Web
import { doc } from "firebase/firestore"; const alovelaceDocumentRef = doc(db, 'users/alovelace');
Web
var alovelaceDocumentRef = db.doc('users/alovelace');
Swift
let aLovelaceDocumentReference = db.document("users/alovelace")
Objective-C
FIRDocumentReference *aLovelaceDocumentReference = [self.db documentWithPath:@"users/alovelace"];
Kotlin+KTX
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
Go
PHP
PHP
Więcej informacji o instalowaniu i tworzeniu klienta Cloud Firestore znajdziesz tutaj: Biblioteki klienta Cloud Firestore.
Unity
DocumentReference documentRef = db.Document("users/alovelace");
C#
C#
Więcej informacji o instalowaniu i tworzeniu klienta Cloud Firestore znajdziesz tutaj: Biblioteki klienta Cloud Firestore.
Ruby
Dane hierarchiczne
Aby dowiedzieć się, jak działają hierarchiczne struktury danych w Cloud Firestore, rozważ zastosowanie przykładowej aplikacji do obsługi wiadomości i pokoi czatu.
Możesz utworzyć kolekcję o nazwie rooms
, aby przechowywać różne pokoje czatu:
pokoju
sala A
name : "my chat room"
sala B
...
Skoro masz już pokoje czatu, zdecyduj, jak chcesz przechowywać wiadomości. Możesz nie chcesz je zapisać w dokumencie pokoju czatu. Dokumenty w folderze Cloud Firestore a pokój czatu może zawierać wiele wiadomości. Dodatkowe kolekcje możesz jednak utworzyć w dokumencie w pokoju czatu. jako kolekcji podrzędnych.
Podkolekcje
W takim przypadku najlepszym sposobem przechowywania wiadomości jest użycie kolekcji podrzędnych. O kolekcja podrzędna jest zbiorem powiązanym z określonym dokumentem.
Możesz utworzyć kolekcję podrzędną o nazwie messages
dla każdego dokumentu w pokoju w
Twoja kolekcja rooms
:
pokoju
sala A
name : "my chat room"
wiadomości
wiadomość1
from : "alex"
msg : "Hello World!"
wiadomość2
...
sala B
...
W tym przykładzie możesz utworzyć odwołanie do wiadomości w kolekcji podrzędnej następującym kodem:
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');
Swift
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+KTX
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
Go
PHP
PHP
Więcej informacji o instalowaniu i tworzeniu klienta Cloud Firestore znajdziesz tutaj: Biblioteki klienta Cloud Firestore.
Unity
DocumentReference documentRef = db .Collection("Rooms").Document("RoomA") .Collection("Messages").Document("Message1");
C#
C#
Więcej informacji o instalowaniu i tworzeniu klienta Cloud Firestore znajdziesz tutaj: Biblioteki klienta Cloud Firestore.
Ruby
Zwróć uwagę na naprzemienne wzorce kolekcji i dokumentów. Twoje kolekcje a dokumenty muszą zawsze być zgodne z tym wzorcem. Nie możesz odwoływać się do kolekcji w kolekcji lub w dokumencie w dokumencie.
Kolekcje podrzędne pozwalają hierarchicznie porządkować dane, co ułatwia ich
dostęp. Aby pobrać wszystkie wiadomości z usługi roomA
, możesz utworzyć plik referencyjny kolekcji
do kolekcji podrzędnej messages
i korzystać z niej jak z każdej innej
odniesienie do kolekcji.
Dokumenty w kolekcjach podrzędnych mogą też zawierać podkolekcje, dzięki czemu możesz: zagnieżdżać dane. Dane można zagnieżdżać do 100 poziomów.