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 : 1815

    • aturing

      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
Nota:questo prodotto non è disponibile su watchOS e nei target App Clip.
let alovelaceDocumentRef = db.collection("users").document("alovelace")
Objective-C
Nota:questo prodotto non è disponibile su watchOS e nei target App Clip.
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
// Reference to a document with id "alovelace" in the collection "users"
DocumentReference document = db.collection("users").document("alovelace");
Python
a_lovelace_ref = db.collection("users").document("alovelace")
Python
(Async)
a_lovelace_ref = db.collection("users").document("alovelace")
C++
DocumentReference alovelace_document_reference =
    db->Collection("users").Document("alovelace");
Node.js
const alovelaceDocumentRef = db.collection('users').doc('alovelace');
Vai

import (
	"cloud.google.com/go/firestore"
)

func createDocReference(client *firestore.Client) {

	alovelaceRef := client.Collection("users").Doc("alovelace")

	_ = alovelaceRef
}
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.

$document = $db->collection('samples/php/users')->document('alovelace');
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.

DocumentReference documentRef = db.Collection("users").Document("alovelace");
Ruby
document_ref = firestore.col("users").doc("alovelace")

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
Nota:questo prodotto non è disponibile su watchOS e nei target App Clip.
let usersCollectionRef = db.collection("users")
Objective-C
Nota:questo prodotto non è disponibile su watchOS e nei target App Clip.
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
// Reference to the collection "users"
CollectionReference collection = db.collection("users");
Python
users_ref = db.collection("users")
Python
(Async)
users_ref = db.collection("users")
C++
CollectionReference users_collection_reference = db->Collection("users");
Node.js
const usersCollectionRef = db.collection('users');
Vai

import (
	"cloud.google.com/go/firestore"
)

func createCollectionReference(client *firestore.Client) {
	usersRef := client.Collection("users")

	_ = usersRef
}
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.

$collection = $db->collection('samples/php/users');
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.

CollectionReference collectionRef = db.Collection("users");
Ruby
collection_ref = firestore.col "users"

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
Nota:questo prodotto non è disponibile su watchOS e nei target App Clip.
let aLovelaceDocumentReference = db.document("users/alovelace")
Objective-C
Nota:questo prodotto non è disponibile su watchOS e nei target App Clip.
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
// Reference to a document with id "alovelace" in the collection "users"
DocumentReference document = db.document("users/alovelace");
Python
a_lovelace_ref = db.document("users/alovelace")
Python
(Async)
a_lovelace_ref = db.document("users/alovelace")
C++
DocumentReference alovelace_document = db->Document("users/alovelace");
Node.js
const alovelaceDocumentRef = db.doc('users/alovelace');
Vai