Nota: Este artículo fue obtenido de la documentación de Firebase de google y lo traigo acá para compartirlo con la comunidad y poder tener la información a la mano para quienes están estudiando bases de datos, espero sea de ayuda.
Cloud Firestore es una base de datos NoSQL orientada a los documentos. A diferencia de una base de datos SQL, no hay tablas ni filas. En su lugar, almacenas los datos en documentos, que se organizan en colecciones.
Cada documento contiene un conjunto de pares clave-valor. Cloud Firestore está optimizado para almacenar grandes colecciones de documentos pequeños.
En Cloud Firestore, la unidad de almacenamiento es el documento. Un documento es un registro liviano que contiene campos con valores asignados. Cada documento se identifica con un nombre.
Un documento que representa a un usuario alovelace puede tener el siguiente aspecto:
class alovelace
first : "Ada"last : "Lovelace"
born : 1815
| Nota: Cloud Firestore admite diversos tipos de datos para los valores, como booleanos, números, strings, puntos geográficos, BLOB binarios y marcas de tiempo Además, puedes usar arreglos u objetos anidados, llamados mapas, para estructurar datos dentro de un documento.
Los objetos complejos anidados en un documento se llaman mapas. Por ejemplo, podrías estructurar el nombre del usuario del ejemplo anterior con un mapa como este:
class alovelace
name :
first : "Ada"last : "Lovelace"
born : 1815
Tal vez te parezca que los documentos son muy similares a JSON. De hecho, básicamente son JSON. Existen algunas diferencias (por ejemplo, los documentos admiten tipos de datos adicionales y su tamaño se limita a 1 MB), pero en general, puedes tratar los documentos como registros JSON livianos.
Los documentos viven en colecciones, que simplemente son contenedores de documentos. Por ejemplo, podrías tener una colección llamada users con los distintos usuarios de tu app, en la que haya un documento que represente a cada uno:
collections_bookmark users
class alovelace
first : "Ada"last : "Lovelace"
born : 1815class aturing
first : "Alan"last : "Turing"
born : 1912
Cloud Firestore no usa esquemas, por lo que tienes libertad total sobre los campos que pones en cada documento y los tipos de datos que almacenas en esos campos. Los documentos dentro de la misma colección pueden contener distintos campos o almacenar distintos tipos de datos en esos campos. Sin embargo, se recomienda usar los mismos campos y tipos de datos en varios documentos, de manera que puedas consultarlos con mayor facilidad.
Una colección contiene solo documentos. No puede contener campos sin procesar con valores de manera directa ni tampoco otras colecciones. (Consulta los datos jerárquicos para ver una explicación sobre cómo estructurar datos más complejos en Cloud Firestore).
Los nombres de documentos dentro de una colección son únicos. Puedes proporcionar tus propias claves, como los ID de usuario, o puedes dejar que Cloud Firestore cree ID aleatorios de forma automática.
No es necesario “crear” ni “borrar” las colecciones. Cuando se crea el primer documento de una colección, esta pasa a existir. Si borras todos los documentos de una colección, esta deja de existir.
Cada documento de Cloud Firestore se identifica de forma única por su ubicación dentro de la base de datos. El ejemplo anterior muestra un documento alovelace en la colección users. Para hacer referencia a esta ubicación en tu código, puedes crear una referencia a ella.
js ->var alovelaceDocumentRef = db.collection('users').doc('alovelace');
py -> a_lovelace_ref = db.collection(u'users').document(u'alovelace')
Una referencia es un objeto liviano que simplemente apunta a una ubicación en la base de datos. Puedes crear una referencia sin importar si existen datos ahí, y crearla no ejecuta ninguna operación de red.
También puedes crear referencias a colecciones:
ja -> var usersCollectionRef = db.collection('users');
py -> users_ref = db.collection(u'users')
Nota: Las referencias a colecciones y las referencias a documentos son dos tipos distintos de referencias que permiten ejecutar diferentes operaciones. Por ejemplo, podrías usar una referencia a una colección para consultar los documentos de la colección y podrías usar una referencia a un documento para leer o escribir en un documento individual.