Tengo una situación en la que necesito mostrar datos combinados de dos colecciones. Después de mostrar esos datos de resultados, quiero aplicar un filtro en estos datos de resultados.
¿Alguien puede sugerir una forma o puede mostrar un ejemplo de este flujo? Aquí están mis datos sin salida
{ "_id" : "a6s54fas46456", "studentId" : "qYt5yHiZfbGrvXWak", "name" : "name1" } { "_id" : "asdf46asd4f", "studentId" : "e2r4nTRiZZRsX6Xgu", "name" : "name2" } { "_id" : "asdf463443asd4f", "studentId" : null, "name" : "name3" } { "_id" : "a6s54fas42346456", "studentId" : "qYt5yHiZfbGrvXWak", "name" : "name4" } { "_id" : "asdf46asd6542344f", "studentId" : null, "name" : "name3" } { "_id" : "e2r4nTRiZZRsX6Xgu", "studentName" : "student2" } { "_id" : "qYt5yHiZfbGrvXWak", "studentName" : "student1" } { UserId: a6s54fas46456 StudentId : "qYt5yHiZfbGrvXWak" "name" : "name1" "studentName" : "student1" } { UserId: asdf46asd4f StudentId : "e2r4nTRiZZRsX6Xgu" "name" : "name2" "studentName" : "student1" } { UserId: asdf463443asd4f StudentId : null "name" : "name3" "studentName" : null } { UserId: a6s54fas42346456 StudentId : "qYt5yHiZfbGrvXWak" "name" : "name4" "studentName" : "student1" } { UserId: asdf46asd6542344f StudentId : null "name" : "name3" "studentName" : null }Gracias
para obtener datos de dos colecciones, debe usar $lookup y $unwind con preserveNullAndEmptyArrays:true:true
db.users.aggregate([ {$lookup:{from:"students", localField:"studentId", foreignField:"_id", as:"student"}}, {$unwind:{path:"$student",preserveNullAndEmptyArrays:true}}, {$project:{ "UserId":"$_id", "StudentId" : "$student._id", "name" : 1, "studentName" : "$student.studentName" } } ])