我在 EmployeeDB 中有三个集合。
{
"user_id" : "EMP001",
"FirstName" : "Manoj",
"LastName" : "sharma",
"Status" : "0/1",
"CreateDate" : "1988-10-11T18:30:00.000Z"
}
{
"user_id" : "EMP001",
"Phone" : "9999999999",
"Email" : "xyz@gmail.com"
}
{
"user_id" : "EMP001",
"Gender" : "Male",
"Age" : NumberInt(20),
"Designation" : "manager",
"Salary" : "5000"
}
我需要将三个集合分组并显示所有字段。 我试过下面的代码,
db.Employee.aggregate([
{$lookup: {from: "EmpContact",localField: "user_id",foreignField: "user_id",as: "contact"}},
{$unwind:"$EmpContact"},
{$lookup: {from: "EmpInfo",localField: "user_id",foreignField: "user_id",as: "empinfo"}},
{$unwind:"$EmpInfo"},
{
$match:{user_id : "EMP001"}
}
]).toArray();
但是我得到了一个空数组,请帮帮我...
答案 0 :(得分:0)
问题来自您的 $unwind
。
由于您在 contact
中将字段命名为 $lookup
,因此字段 EmpContact
不存在。
第二个 unwind
的情况相同,EmpInfo
不存在但 empinfo
存在
这是完整的查询
db.Employee.aggregate([
{
$lookup: {
from: "EmpContact",
localField: "user_id",
foreignField: "user_id",
as: "contact"
}
},
{
$unwind: "$contact"
},
{
$lookup: {
from: "EmpContact",
localField: "user_id",
foreignField: "user_id",
as: "empinfo"
}
},
{
$unwind: "$empinfo"
},
{
$match: {
user_id: "EMP001"
}
}
])
试试here