现已推出具有 MongoDB 兼容性的 Firestore 企业版!
了解详情。
Scegli una struttura di dati
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
Ricorda che, quando strutturi i dati in Cloud Firestore, hai a disposizione alcune opzioni diverse:
- Documenti
- Più raccolte
- Sottoraccolte all'interno dei documenti
Valuta i vantaggi di ogni opzione in relazione al tuo caso d'uso. In questa guida sono descritte alcune strutture di esempio per i dati gerarchici.
Dati nidificati nei documenti
Puoi nidificare oggetti complessi come array o mappe all'interno dei documenti.
- Vantaggi: se hai elenchi di dati semplici e fissi che
vuoi conservare nei tuoi documenti, questa opzione è facile da configurare e semplifica
la struttura dei dati.
-
Limitazioni:
questa opzione non è scalabile come le altre,
soprattutto se i dati aumentano nel tempo. Con elenchi più grandi o in crescita, anche il documento cresce, il che può comportare tempi di recupero più lenti.
- Qual è un possibile caso d'uso? In un'app di chat, ad esempio, potresti memorizzare le tre chat room visitate più di recente da un utente come elenco nidificato nel suo profilo.
|
- class alovelace
- name :
first : "Ada"
last : "Lovelace"
born : 1815
rooms :
0 : "Software Chat"
1 : "Famous Figures"
2 : "Famous SWEs"
|
Sottoraccolte
Puoi creare raccolte all'interno dei documenti quando hai dati che potrebbero espandersi nel tempo.
- Vantaggi: man mano che gli elenchi crescono, le dimensioni del documento principale non cambiano. Inoltre, puoi eseguire query complete sulle raccolte secondarie
ed emettere
query sui gruppi di raccolte nelle raccolte secondarie.
-
Limitazioni:non puoi eliminare facilmente le sottoraccolte.
- Qual è un possibile caso d'uso? Nella stessa app di chat, ad esempio, puoi creare raccolte di utenti o messaggi all'interno dei documenti delle chat room.
|
- collections_bookmark science
- class software
name : "software chat"
- collections_bookmark
utenti
- class
alovelace
first : "Ada"
last : "Lovelace"
- class
sride
first : "Sally"
last : "Ride"`
- class astrophysics
|
Raccolte a livello di radice
Crea raccolte a livello principale del database per organizzare set di dati disparati.
- Vantaggi:le raccolte a livello di radice sono adatte alle relazioni molti-a-molti e forniscono query efficaci all'interno di ogni raccolta.
-
Limitazioni: l'ottenimento di dati naturalmente gerarchici potrebbe
diventare sempre più complesso con la crescita del database.
- Qual è un possibile caso d'uso? Nella stessa app di chat,
ad esempio, potresti creare una raccolta per gli utenti e un'altra per le stanze e i
messaggi.
|
- collections_bookmark
utenti
- class alovelace
first : "Ada"
last : "Lovelace"
born : 1815
- class sride
first : "Sally"
last : "Ride"
born : 1951
- collections_bookmark stanze
- class software
- collections_bookmark
messaggi
- class
message1
from : "alovelace"
content : "..."
- class
message2
from : "sride"
content : "..."
|
Salvo quando diversamente specificato, i contenuti di questa pagina sono concessi in base alla licenza Creative Commons Attribution 4.0, mentre gli esempi di codice sono concessi in base alla licenza Apache 2.0. Per ulteriori dettagli, consulta le norme del sito di Google Developers. Java è un marchio registrato di Oracle e/o delle sue consociate.
Ultimo aggiornamento 2025-08-16 UTC.
[null,null,["Ultimo aggiornamento 2025-08-16 UTC."],[],[],null,["\u003cbr /\u003e\n\nRemember, when you structure your data in Cloud Firestore, you\nhave a few different options:\n\n- Documents\n- Multiple collections\n- Subcollections within documents\n\nConsider the advantages of each option as they\nrelate to your use case. A few example structures for hierarchical data\nare outlined in this guide.\n\n\u003cbr /\u003e\n\nNested data in documents\n\nYou can nest complex objects like arrays or maps within documents.\n\n|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------|\n| - **Advantages:** If you have simple, fixed lists of data that you want to keep within your documents, this is easy to set up and streamlines your data structure. - **Limitations:** This isn't as scalable as other options, especially if your data expands over time. With larger or growing lists, the document also grows, which can lead to slower document retrieval times. - **What's a possible use case?** In a chat app, for example, you might store a user's 3 most recently visited chat rooms as a nested list in their profile. | - class alovelace - name : first : \"Ada\" last : \"Lovelace\" born : 1815 rooms : 0 : \"Software Chat\" 1 : \"Famous Figures\" 2 : \"Famous SWEs\" |\n\nSubcollections\n\nYou can create collections within documents when you have data that might expand\nover time.\n\n|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| - **Advantages:** As your lists grow, the size of the parent document doesn't change. You also get full query capabilities on subcollections, and you can issue [collection group queries](../query-data/queries) across subcollections. - **Limitations:** You can't easily delete subcollections. - **What's a possible use case?** In the same chat app, for example, you might create collections of users or messages within chat room documents. | - collections_bookmark science - class software name : \"software chat\" - collections_bookmark users - class alovelace first : \"Ada\" last : \"Lovelace\" - class sride first : \"Sally\" last : \"Ride\"\\` \u003cbr /\u003e \u003cbr /\u003e - class astrophysics - ... |\n\nRoot-level collections\n\nCreate collections at the root level of your database to organize disparate data\nsets.\n\n|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| - **Advantages:** Root-level collections are good for many-to-many relationships and provide powerful querying within each collection. - **Limitations:** Getting data that is naturally hierarchical might become increasingly complex as your database grows. - **What's a possible use case?** In the same chat app, for example, you might create one collection for users and another for rooms and messages. | - collections_bookmark users - class alovelace first : \"Ada\" last : \"Lovelace\" born : 1815 - class sride first : \"Sally\" last : \"Ride\" born : 1951 - collections_bookmark rooms - class software - collections_bookmark messages - class message1 from : \"alovelace\" content : \"...\" - class message2 from : \"sride\" content : \"...\" |"]]