Cloud Firestore ist eine dokumentenorientierte NoSQL-Datenbank. Im Gegensatz zu einer SQL-Datenbank gibt es keine Tabellen oder Zeilen. Stattdessen speichern Sie Daten in Dokumenten , die in Sammlungen organisiert sind.
Jedes Dokument enthält eine Reihe von Schlüssel-Wert-Paaren. Cloud Firestore ist für die Speicherung großer Sammlungen kleiner Dokumente optimiert.
Alle Dokumente müssen in Sammlungen aufbewahrt werden. Dokumente können Untersammlungen und verschachtelte Objekte enthalten, die beide primitive Felder wie Zeichenfolgen oder komplexe Objekte wie Listen enthalten können.
Sammlungen und Dokumente werden implizit im Cloud Firestore erstellt. Ordnen Sie Daten einfach einem Dokument innerhalb einer Sammlung zu. Wenn die Sammlung oder das Dokument nicht vorhanden ist, wird es von Cloud Firestore erstellt.
Unterlagen
In Cloud Firestore ist die Speichereinheit das Dokument. Ein Dokument ist ein kompakter Datensatz, der Felder enthält, die Werten zugeordnet sind. Jedes Dokument wird durch einen Namen identifiziert.
Ein Dokument, das einen Benutzer alovelace
darstellt, könnte wie folgt aussehen:
first : "Ada"
last : "Lovelace"
born : 1815
Komplexe, verschachtelte Objekte in einem Dokument werden als Karten bezeichnet. Sie könnten beispielsweise den Namen des Benutzers aus dem obigen Beispiel mit einer Karte wie folgt strukturieren:
name :
first : "Ada"
last : "Lovelace"
born : 1815
Möglicherweise stellen Sie fest, dass Dokumente JSON sehr ähneln. Tatsächlich sind sie es im Grunde. Es gibt einige Unterschiede (z. B. unterstützen Dokumente zusätzliche Datentypen und sind in der Größe auf 1 MB begrenzt), aber im Allgemeinen können Sie Dokumente als leichtgewichtige JSON-Datensätze behandeln.
Sammlungen
Dokumente befinden sich in Sammlungen, die lediglich Container für Dokumente sind. Sie könnten beispielsweise eine users
haben, die Ihre verschiedenen Benutzer enthält, die jeweils durch ein Dokument dargestellt werden:
Benutzer
first : "Ada"
last : "Lovelace"
born : 1815
first : "Alan"
last : "Turing"
born : 1912
Cloud Firestore ist schemalos, sodass Sie völlig frei entscheiden können, welche Felder Sie in jedes Dokument einfügen und welche Datentypen Sie in diesen Feldern speichern. Dokumente innerhalb derselben Sammlung können alle unterschiedliche Felder enthalten oder unterschiedliche Datentypen in diesen Feldern speichern. Es empfiehlt sich jedoch, in mehreren Dokumenten dieselben Felder und Datentypen zu verwenden, damit Sie die Dokumente einfacher abfragen können.
Eine Sammlung enthält Dokumente und sonst nichts. Es kann keine Rohfelder mit Werten direkt enthalten und es kann keine anderen Sammlungen enthalten. (Eine Erläuterung zur Strukturierung komplexerer Daten in Cloud Firestore finden Sie unter Hierarchische Daten .)
Die Namen von Dokumenten innerhalb einer Sammlung sind eindeutig. Sie können Ihre eigenen Schlüssel wie Benutzer-IDs bereitstellen oder Cloud Firestore automatisch zufällige IDs erstellen lassen.
Sie müssen keine Sammlungen „erstellen“ oder „löschen“. Nachdem Sie das erste Dokument in einer Sammlung erstellt haben, ist die Sammlung vorhanden. Wenn Sie alle Dokumente in einer Sammlung löschen, ist diese nicht mehr vorhanden.
Verweise
Jedes Dokument in Cloud Firestore wird durch seinen Speicherort in der Datenbank eindeutig identifiziert. Das vorherige Beispiel zeigte ein Dokument alovelace
innerhalb der Sammlung users
befindet. Um auf diese Stelle in Ihrem Code zu verweisen, können Sie einen Verweis darauf erstellen.
Web modular API
import { doc } from "firebase/firestore"; const alovelaceDocumentRef = doc(db, 'users', 'alovelace');
Web namespaced API
var alovelaceDocumentRef = db.collection('users').doc('alovelace');
Schnell
let alovelaceDocumentRef = db.collection("users").document("alovelace")
Ziel 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
Gehen
PHP
PHP
Weitere Informationen zum Installieren und Erstellen eines Cloud Firestore-Clients finden Sie unter Cloud Firestore-Clientbibliotheken .
Einheit
DocumentReference documentRef = db.Collection("users").Document("alovelace");
C#
C#
Weitere Informationen zum Installieren und Erstellen eines Cloud Firestore-Clients finden Sie unter Cloud Firestore-Clientbibliotheken .
Rubin
Eine Referenz ist ein leichtes Objekt, das lediglich auf einen Ort in Ihrer Datenbank verweist. Sie können eine Referenz unabhängig davon erstellen, ob dort Daten vorhanden sind oder nicht. Durch die Erstellung einer Referenz werden keine Netzwerkvorgänge ausgeführt.
Sie können auch Verweise auf Sammlungen erstellen:
Web modular API
import { collection } from "firebase/firestore"; const usersCollectionRef = collection(db, 'users');
Web namespaced API
var usersCollectionRef = db.collection('users');
Schnell
let usersCollectionRef = db.collection("users")
Ziel 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
Gehen
PHP
PHP
Weitere Informationen zum Installieren und Erstellen eines Cloud Firestore-Clients finden Sie unter Cloud Firestore-Clientbibliotheken .
Einheit
CollectionReference collectionRef = db.Collection("users");
C#
C#
Weitere Informationen zum Installieren und Erstellen eines Cloud Firestore-Clients finden Sie unter Cloud Firestore-Clientbibliotheken .
Rubin
Der Einfachheit halber können Sie Referenzen auch erstellen, indem Sie den Pfad zu einem Dokument oder einer Sammlung als Zeichenfolge angeben, wobei die Pfadkomponenten durch einen Schrägstrich ( /
) getrennt sind. So erstellen Sie beispielsweise einen Verweis auf das alovelace
Dokument:
Web modular API
import { doc } from "firebase/firestore"; const alovelaceDocumentRef = doc(db, 'users/alovelace');
Web namespaced API
var alovelaceDocumentRef = db.doc('users/alovelace');
Schnell
let aLovelaceDocumentReference = db.document("users/alovelace")
Ziel 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
Gehen
PHP
PHP
Weitere Informationen zum Installieren und Erstellen eines Cloud Firestore-Clients finden Sie unter Cloud Firestore-Clientbibliotheken .
Einheit
DocumentReference documentRef = db.Document("users/alovelace");
C#
C#
Weitere Informationen zum Installieren und Erstellen eines Cloud Firestore-Clients finden Sie unter Cloud Firestore-Clientbibliotheken .
Rubin
Hierarchische Daten
Um zu verstehen, wie hierarchische Datenstrukturen in Cloud Firestore funktionieren, betrachten Sie eine Beispiel-Chat-App mit Nachrichten und Chatrooms.
Sie können eine Sammlung namens rooms
erstellen, um verschiedene Chatrooms zu speichern:
name : "my chat room"
...
Da Sie nun über Chatrooms verfügen, entscheiden Sie, wie Sie Ihre Nachrichten speichern. Möglicherweise möchten Sie sie nicht im Dokument des Chatrooms speichern. Dokumente im Cloud Firestore sollten leichtgewichtig sein und ein Chatroom könnte eine große Anzahl von Nachrichten enthalten. Sie können jedoch im Dokument Ihres Chatrooms zusätzliche Sammlungen als Untersammlungen erstellen.
Untersammlungen
Die beste Möglichkeit, Nachrichten in diesem Szenario zu speichern, ist die Verwendung von Untersammlungen. Eine Untersammlung ist eine Sammlung, die einem bestimmten Dokument zugeordnet ist.
Sie können für jedes Raumdokument in Ihrer rooms
eine Untersammlung mit dem Namen messages
erstellen:
name : "my chat room"
from : "alex"
msg : "Hello World!"
...
...
In diesem Beispiel würden Sie mit dem folgenden Code einen Verweis auf eine Nachricht in der Untersammlung erstellen:
Web modular API
import { doc } from "firebase/firestore"; const messageRef = doc(db, "rooms", "roomA", "messages", "message1");
Web namespaced API
var messageRef = db.collection('rooms').doc('roomA') .collection('messages').doc('message1');
Schnell
let messageRef = db .collection("rooms").document("roomA") .collection("messages").document("message1")
Ziel 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
Gehen
PHP
PHP
Weitere Informationen zum Installieren und Erstellen eines Cloud Firestore-Clients finden Sie unter Cloud Firestore-Clientbibliotheken .
Einheit
DocumentReference documentRef = db .Collection("Rooms").Document("RoomA") .Collection("Messages").Document("Message1");
C#
C#
Weitere Informationen zum Installieren und Erstellen eines Cloud Firestore-Clients finden Sie unter Cloud Firestore-Clientbibliotheken .
Rubin
Beachten Sie das wechselnde Muster von Sammlungen und Dokumenten. Ihre Sammlungen und Dokumente müssen immer diesem Muster folgen. Sie können nicht auf eine Sammlung in einer Sammlung oder auf ein Dokument in einem Dokument verweisen.
Mit Untersammlungen können Sie Daten hierarchisch strukturieren und so den Zugriff auf Daten erleichtern. Um alle Nachrichten in roomA
abzurufen, können Sie einen Sammlungsverweis auf die messages
erstellen und wie mit jedem anderen Sammlungsverweis damit interagieren.
Dokumente in Untersammlungen können auch Untersammlungen enthalten, sodass Sie Daten weiter verschachteln können. Sie können Daten bis zu einer Tiefe von 100 Ebenen verschachteln.