Tengo la colección A, la colección B y la colección C. La colección A tiene muchos B y B tiene muchos C (B tiene una clave principal A como campo y C tiene una clave principal B como campo).
Algo como esto
class A { //fields } class B { a_id } class C { b_id }Quiero obtener todas las C que correspondan a A, por ejemplo, quiero hacer coincidir todas las C donde la B a la que pertenecen pertenece a cierta A.
Si tengo A id , quiero obtener todas las C que pertenecen indirectamente a esta A. Uso de mongoose y MongoDB
Puedes hacerlo con Aggregation Framework:
$lookup : para encontrar documentos B que están vinculados en documentos C$lookup : para encontrar documentos A que están vinculados en documentos B$match : para filtrar solo el documento para el A_id solicitado$project : para seleccionar los campos que desea devolver db.C.aggregate([ { "$lookup": { "from": "B", "localField": "b_id", "foreignField": "_id", "as": "b" } }, { "$lookup": { "from": "A", "localField": "b.a_id", "foreignField": "_id", "as": "a" } }, { "$match": { "a._id": 1 } }, { "$project": { "_id": 1, "name": 1 } } ])