我正在使用mongoDB和new to native命令,我喜欢使用别名来表示字段名称
这里我使用两个表(公司和员工),在公司表中员工字段与多对一关联
我的实际JSON如下。表一及其名称是"公司"
comp_name : "YYYY",
employers : [
{
name : "Mike",
status : "Active",
id : 01
},{
name : "San",
status: "InActive",
id : 02
}
],
status : "Active",
id : 00001
表2及其名称是"员工"
{
name : "Mike",
status : "Active",
id : 01,
company : {
name : "YYYY",
status : "Active",
id : 00001
}
},
{
name : "San",
status: "InActive",
id : 02,
company : {
name : "YYYY",
status : "Active",
id : 00001
}
}
我可以使用命令
在公司表中获取直接字段作为别名Company.aggregate([
{$match:{}},
{$project:{c_name:"$comp_name",id:1}}
])
但是我无法在公司表中的雇主那里获得数据,状态是"活跃"
我期望的JSON是, 表一及其名称是"公司"
c_name : "YYYY",
emp : [
{
n : "Mike",
st : "Active",
id : 01
}
],
st : "Active",
id : 00001
表2及其名称是"员工"
{
n : "Mike",
st : "Active",
id : 01,
comp : {
n : "YYYY",
st : "Active",
id : 00001
}
}
答案 0 :(得分:1)
这将是贵公司的收藏品
db.company.aggregate([
{ $match:{ status: "Active"} }, // to only get the documents that have ths status
{ $unwind: "$employers"}, // to flatten your array
{ $match:{ "employers.status": "Active"} }, // match again for active employers
{ $project: { // for the final structure
c_name: "$comp_name",
emp: ["$employers"],
st: "$status",
id: 1
}
}
])