mongoDB中的字段名称别名

时间:2017-12-14 12:59:01

标签: javascript json node.js mongodb sails.js

我正在使用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
            }
}

1 个答案:

答案 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
  }
}
])