Database
db={"Collection_A":[{"_id":1,"key_A":"value_a1"}],"Collection_B":[{"_id":10,"id_A":1,"key_B":"value_b1"},{"_id":11,"id_A":1,"key_B":"value_b2"}],"Collection_C":[{"_id":100,"id_B":10,"key_C":"value_c1"},{"_id":101,"id_B":10,"key_C":"value_c2"},{"_id":102,"id_B":11,"key_C":"value_c3"},{"_id":103,"id_B":11,"key_C":"value_c4"}]}
Query
db.Collection_A.aggregate([{"$graphLookup":{"from":"Collection_B","startWith":"$_id","connectFromField":"_id","connectToField":"id_A","as":"children_A"}},{$unwind:"$children_A"},{"$graphLookup":{"from":"Collection_C","startWith":"$children_A._id","connectFromField":"children_A._id","connectToField":"id_B","as":"children_A.children_B"}},{$group:{"_id":"$_id","key_A":{$first:"$key_A"},"children_A":{$push:"$children_A"}}}])