2017-01-31 9 views
1

2つのコレクションの結合データを表示する必要がある状況があります。その結果のデータを表示した後、私はこの結果データにフィルターを適用したい。2つのコレクションの結果を表示し、その結果データにフィルタを適用します。

誰にでもこのフローの例を示すことができますか? はここでアウトと私のデータは

ユーザー

{ 
    "_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" 
} 

アウトプットコレクト2からデータを取得するための

{ 
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 
} 

おかげ

+0

あなたのコレクションを共有して$lookup$unwindを使用する必要がありますイオン。 –

答えて

1

を入れていますあなたは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" 
     } 
    } 
]) 
関連する問題