使用 mongodb 3.2 聚合$lookup 运算符(mongodb 中的左外连接)
db.classroom.aggregate([
{
$lookup : {
'from' : 'children',
'localField': '_id',
'foreignField': 'classroom_id',
'as': 'children'
}
}
]);
得到结果:
{
"_id" : ObjectId("56c33ed80a3fba192138e2ac"),
"name" : "History",
"children" : [
{
"_id" : ObjectId("56c33e6b0a3fba192138e2a8"),
"name" : "John",
"classroom_id" : ObjectId("56c33ed80a3fba192138e2ac")
},
{
"_id" : ObjectId("56c33e820a3fba192138e2aa"),
"name" : "Bob",
"classroom_id" : ObjectId("56c33ed80a3fba192138e2ac")
}
]
}
{
"_id" : ObjectId("56c33eef0a3fba192138e2ae"),
"name" : "English",
"children" : [
{
"_id" : ObjectId("56c33f350a3fba192138e2b0"),
"name" : "Tom",
"classroom_id" : ObjectId("56c33eef0a3fba192138e2ae")
}
]
}
您也可以使用$project 运算符格式化结果
我的收藏是:
教室
{
"_id" : ObjectId("56c33ed80a3fba192138e2ac"),
"name" : "History"
}
{
"_id" : ObjectId("56c33eef0a3fba192138e2ae"),
"name" : "English"
}
儿童
{
"_id" : ObjectId("56c33e6b0a3fba192138e2a8"),
"name" : "John",
"classroom_id" : ObjectId("56c33ed80a3fba192138e2ac")
}
{
"_id" : ObjectId("56c33e820a3fba192138e2aa"),
"name" : "Bob",
"classroom_id" : ObjectId("56c33ed80a3fba192138e2ac")
}
{
"_id" : ObjectId("56c33f350a3fba192138e2b0"),
"name" : "Tom",
"classroom_id" : ObjectId("56c33eef0a3fba192138e2ae")
}