Modello dei dati
un database NoSQL orientato ai documenti. A differenza di un database SQL, non ci sono tabelle o righe. Invece, i dati vengono archiviati in documenti, che sono organizzati in raccolte.
Ogni documento contiene una serie di coppie chiave-valore. Firestore è ottimizzato per l'archiviazione di grandi raccolte di piccoli documenti.
Tutti i documenti devono essere archiviati in raccolte. I documenti possono contenere sottoraccolte e oggetti nidificati, entrambi possono includere campi primitivi come stringhe o oggetti complessi come elenchi.
Raccolte e documenti vengono creati implicitamente in Firestore. Assegna semplicemente i dati a un documento all'interno di una raccolta. Se la raccolta o il documento non esiste, Firestore lo crea.
Documenti
In Firestore, l'unità di archiviazione è il documento. Un documento è un record leggero che contiene campi, che vengono mappati ai valori. Ogni documento è identificato da un nome.
Un documento che rappresenta un utente alovelace potrebbe avere il seguente aspetto:
alovelace
first : "Ada"
last : "Lovelace"
born : 1815
Gli oggetti nidificati complessi in un documento sono chiamati mappe. Ad esempio, potresti strutturare il nome dell'utente dell'esempio precedente con una mappa, in questo modo:
alovelace
name :
first : "Ada"
last : "Lovelace"
born : 1815
Potresti notare che i documenti assomigliano molto a JSON. Infatti, lo sono. Esistono alcune differenze (ad esempio, i documenti supportano tipi di dati aggiuntivi e sono limitati al limite di dimensione dei documenti), ma in generale puoi trattare i documenti come record JSON leggeri.
Raccolte

I documenti si trovano nelle raccolte, che sono semplicemente contenitori per i documenti. Ad esempio, potresti avere una raccolta users per contenere i vari utenti, ognuno
rappresentato da un documento:
utenti
alovelace
first : "Ada"
last : "Lovelace"
born : 1815aturing
first : "Alan"
last : "Turing"
born : 1912
Firestore è privo di schema, quindi hai la massima libertà di scegliere i campi da inserire in ogni documento e i tipi di dati da archiviare in questi campi. I documenti all'interno della stessa raccolta possono contenere tutti campi diversi o archiviare tipi diversi di dati in questi campi. Tuttavia, è consigliabile utilizzare gli stessi campi e tipi di dati in più documenti, in modo da poter eseguire query sui documenti più facilmente.
Una raccolta contiene documenti e nient'altro. Non può contenere direttamente campi non elaborati con valori e non può contenere altre raccolte. (Consulta la sezione Dati gerarchici per una spiegazione di come strutturare dati più complessi in Firestore.)
I nomi dei documenti all'interno di una raccolta sono univoci. Puoi fornire le tue chiavi, ad esempio gli ID utente, oppure puoi lasciare che Firestore crei automaticamente ID casuali.
Non è necessario "creare" o "eliminare" le raccolte. Dopo aver creato il primo documento in una raccolta, la raccolta esiste. Se elimini tutti i documenti di una raccolta, questa non esiste più.
Riferimenti
Ogni documento in Firestore è identificato in modo univoco dalla sua posizione
all'interno del database. L'esempio precedente mostrava un documento alovelace all'interno della raccolta users. Per fare riferimento a questa posizione nel codice, puoi creare un
riferimento.
Versione web 9
import { doc } from "firebase/firestore"; const alovelaceDocumentRef = doc(db, 'users', 'alovelace');
Versione web 8
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
Android
val alovelaceDocumentRef = db.collection("users").document("alovelace")
Java
Android
DocumentReference alovelaceDocumentRef = db.collection("users").document("alovelace");
Freccetta
final alovelaceDocumentRef = db.collection("users").doc("alovelace");
Java
Python
Python
(Async)
C++
DocumentReference alovelace_document_reference = db->Collection("users").Document("alovelace");
Node.js
Vai
PHP
PHP
Per eseguire l'autenticazione in Firestore, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
Unity
DocumentReference documentRef = db.Collection("users").Document("alovelace");
C#
C#
Per eseguire l'autenticazione in Firestore, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
Ruby
Un riferimento è un oggetto leggero che punta a una posizione nel tuo database. Puoi creare un riferimento indipendentemente dalla presenza o meno di dati e la creazione di un riferimento non esegue alcuna operazione di rete.
Puoi anche creare riferimenti a raccolte:
Versione web 9
import { collection } from "firebase/firestore"; const usersCollectionRef = collection(db, 'users');
Versione web 8
var usersCollectionRef = db.collection('users');
Swift
let usersCollectionRef = db.collection("users")
Objective-C
FIRCollectionReference *usersCollectionRef = [self.db collectionWithPath:@"users"];
Kotlin
Android
val usersCollectionRef = db.collection("users")
Java
Android
CollectionReference usersCollectionRef = db.collection("users");
Freccetta
final usersCollectionRef = db.collection("users");
Java
Python
Python
(Async)
C++
CollectionReference users_collection_reference = db->Collection("users");
Node.js
Vai
PHP
PHP
Per eseguire l'autenticazione in Firestore, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
Unity
CollectionReference collectionRef = db.Collection("users");
C#
C#
Per eseguire l'autenticazione in Firestore, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
Ruby
Per comodità, puoi anche creare riferimenti specificando il percorso di un documento o di una raccolta come stringa, con i componenti del percorso separati da una barra (/). Ad esempio, per creare un riferimento al documento alovelace:
Versione web 9
import { doc } from "firebase/firestore"; const alovelaceDocumentRef = doc(db, 'users/alovelace');
Versione web 8
var alovelaceDocumentRef = db.doc('users/alovelace');
Swift
let aLovelaceDocumentReference = db.document("users/alovelace")
Objective-C
FIRDocumentReference *aLovelaceDocumentReference = [self.db documentWithPath:@"users/alovelace"];
Kotlin
Android
val alovelaceDocumentRef = db.document("users/alovelace")
Java
Android
DocumentReference alovelaceDocumentRef = db.document("users/alovelace");
Freccetta
final aLovelaceDocRef = db.doc("users/alovelace");
Java
Python
Python
(Async)
C++
DocumentReference alovelace_document = db->Document("users/alovelace");