Para aquellos de ustedes que trabajaron con Firebase (Firestore), pueden tener una colección con documentos en los que cada documento tiene una identificación, luego una colección puede contener una subcolección (equivalente a un documento incrustado como una matriz de documentos como una propiedad ).
Entonces, esta subcolección puede contener muchos documentos mientras cada uno tiene una identificación.
En Firestore, la subcolección tiene carga diferida.
Obtendrá los documentos de esa colección, pero si hay una o más subcolecciones, no los recuperará a menos que vaya específicamente a esa ruta. por ejemplo: colección/documento/nombre de la subcolección/otro documento
Entonces 2 preguntas:
EDITAR : Actualmente tengo una implementación de Firestore que tiene una práctica de subcolección detrás.
Ejemplo: organización => ID de documento => proyectos => ID de proyecto => actividades => :tipo de actividad => ID de actividad
Ahora, lo bueno de esto es que si elijo obtener todas las organizaciones, obtendré solo los documentos de la colección de la organización y NO las subcolecciones incrustadas ( proyectos , etc. ) mientras que en MongoDB , obtendría TODO por documento .
¿Cómo logro los mismos documentos anidados con su propia estructura de documentos anidados con el efecto de carga diferida en MongoDB?
¿Cuántas actividades puede tener un solo proyecto? Si no hay límite, es mejor que cree una colección de nivel raíz para las actividades. En MongoDB, el tamaño máximo del documento BSON es de 16 MB . Es posible que no pueda almacenar todos los proyectos y sus actividades en un solo documento (documento de la organización).
Crearía 3 colecciones, a saber: organizaciones, proyectos y actividades.
projectID campos de ID de organizationID y de ID de proyecto adicionales aunque tenga _id en caso de que desee tener los ID de documentos de Firestore allí para facilitar las consultas en paralelo.
No tiene que preocuparse por el límite de tamaño de documento de 16 MB de esta manera y será más fácil consultar proyectos y actividades siempre que tenga las ID correctas.
Consulta de actividades de un determinado proyecto:
await db.collection("activities").find({projectID: "myProjectID"}).toArray()A partir de entonces, depende de usted cómo desea escribir consultas con proyecciones, agregación, etc.