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 das Speichern großer Sammlungen kleiner Dokumente optimiert.
Alle Dokumente müssen in Sammlungen aufbewahrt werden. Dokumente können untergeordnete Sammlungen und verschachtelte Objekte enthalten, die beide primitive Felder wie Zeichenfolgen oder komplexe Objekte wie Listen enthalten können.
Sammlungen und Dokumente werden implizit in Cloud Firestore erstellt. Ordnen Sie Daten einfach einem Dokument innerhalb einer Sammlung zu. Wenn entweder die Sammlung oder das Dokument nicht vorhanden ist, erstellt Cloud Firestore es.
Unterlagen
In Cloud Firestore ist die Speichereinheit das Dokument. Ein Dokument ist ein einfacher 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 so aussehen:
first : "Ada"
last : "Lovelace"
born : 1815
Komplexe, verschachtelte Objekte in einem Dokument werden Karten genannt. Beispielsweise könnten Sie 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 ähnlich sehen. 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 einfache JSON-Datensätze behandeln.
Sammlungen
Dokumente leben in Sammlungen, die einfach Container für Dokumente sind. Beispielsweise könnten Sie eine users
haben, die Ihre verschiedenen Benutzer enthält, die jeweils durch ein Dokument repräsentiert werden:
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, dieselben Felder und Datentypen in mehreren Dokumenten zu verwenden, damit Sie die Dokumente einfacher abfragen können.
Eine Sammlung enthält Dokumente und sonst nichts. Es kann nicht direkt Rohfelder mit Werten enthalten, und es kann keine anderen Sammlungen enthalten. (Unter Hierarchische Daten finden Sie eine Erläuterung zur Strukturierung komplexerer Daten in Cloud Firestore.)
Die Namen von Dokumenten innerhalb einer Sammlung sind eindeutig. Sie können Ihre eigenen Schlüssel bereitstellen, z. B. Benutzer-IDs, oder Cloud Firestore automatisch zufällige IDs für Sie erstellen lassen.
Sie müssen Sammlungen nicht „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 alovelace
innerhalb der Sammlung users
. Um in Ihrem Code auf diese Stelle zu verweisen, können Sie einen Verweis darauf erstellen.
Web version 9
import { doc } from "firebase/firestore"; const alovelaceDocumentRef = doc(db, 'users', 'alovelace');
Web version 8
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 erstellen, unabhängig davon, ob dort Daten vorhanden sind oder nicht, und durch das Erstellen einer Referenz werden keine Netzwerkoperationen ausgeführt.
Sie können auch Verweise auf Sammlungen erstellen:
Web version 9
import { collection } from "firebase/firestore"; const usersCollectionRef = collection(db, 'users');
Web version 8
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 auch Verweise erstellen, indem Sie den Pfad zu einem Dokument oder einer Sammlung als Zeichenfolge angeben, wobei die Pfadkomponenten durch einen Schrägstrich ( /
) getrennt sind. Um beispielsweise einen Verweis auf das alovelace
-Dokument zu erstellen:
Web version 9
import { doc } from "firebase/firestore"; const alovelaceDocumentRef = doc(db, 'users/alovelace');
Web version 8
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"
...
Jetzt, wo Sie Chatrooms haben, entscheiden Sie, wie Sie Ihre Nachrichten speichern möchten. Möglicherweise möchten Sie sie nicht im Dokument des Chatrooms speichern. Dokumente in Cloud Firestore sollten leicht sein, und ein Chatroom kann eine große Anzahl von Nachrichten enthalten. Sie können jedoch innerhalb des Dokuments Ihres Chatrooms zusätzliche Sammlungen als Untersammlungen erstellen.
Untersammlungen
Die beste Methode zum Speichern von Nachrichten in diesem Szenario 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 namens 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 version 9
import { doc } from "firebase/firestore"; const messageRef = doc(db, "rooms", "roomA", "messages", "message1");
Web version 8
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 abwechselnde 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 ein Dokument in einem Dokument verweisen.
Mit Untersammlungen können Sie Daten hierarchisch strukturieren, wodurch der Datenzugriff erleichtert wird. Um alle Nachrichten in roomA
abzurufen, können Sie einen Sammlungsverweis auf die messages
erstellen und damit wie mit jedem anderen Sammlungsverweis interagieren.
Dokumente in Untersammlungen können auch Untersammlungen enthalten, sodass Sie Daten weiter verschachteln können. Sie können Daten bis zu 100 Ebenen tief verschachteln.