mongodb多表查询

db.ClassMembers.insertMany([
{
"ClassID":"CL0001",
"StudentID":"S000001",
"DateFrom":"2015-09-01"
},
{
"ClassID":"CL0002",
"StudentID":"S000002",
"DateFrom":"2015-09-01"
}
]);
db.Scores.insertMany([
{
"StudentID":"S000001",
"TestID":"T000001",
"Scores":[{
"Course":"Chinese",
"Score":80
},{
"Course":"Maths",
"Score":70
},{
"Course":"English",
"Score":75
}]
},
{
"StudentID":"S000002",
"TestID":"T000001",
"Scores":[{
"Course":"Chinese",
"Score":70
},{
"Course":"Maths",
"Score":80
},{
"Course":"English",
"Score":82
}]
}
]);
db.ClassMembers.aggregate([
{
$match: {ClassID: 'CL0001'}
},
{
$lookup:
{
from: "Scores",
localField: "StudentID",
foreignField: "StudentID",
as: "ScoresDocs"
}
},
{ $match : { "ScoresDocs.TestID" : 'T000001' }},
{ $project: { _id: 0, ClassID: 1, ScoresDocs: 1}},
{ $unwind: '$ScoresDocs'},
{ $unwind: '$ScoresDocs.Scores'},
{ $match: {'ScoresDocs.Scores.Course':'Chinese'}}

])

//最后一步

将数据从对象列取出来地址:https://docs.mongodb.com/master/reference/operator/aggregation/replaceRoot/#pipe._S_replaceRoot

posted @ 2017-08-25 10:07  love飞飞  阅读(3032)  评论(0编辑  收藏  举报