【问题标题】:Field name aliasing in mongoDBmongoDB中的字段名称别名
【发布时间】:2017-12-14 12:59:00
【问题描述】:

我正在使用 mongoDB 并且是本机命令的新手,我喜欢使用别名作为字段名称

这里我使用两个表(公司和员工),公司表中的员工字段与多对一关联

我的实际 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
            }
}

【问题讨论】:

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


【解决方案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
  }
}
])

【讨论】:

  • 有没有办法在find() 查询中进行投影?
  • @ZachSmith 我认为您可以通过投影来做到这一点:db.getCollection("company").find({employers: {$elemMatch: {status: "Active"}}}, {comp_name: 1, "employers.$": 1, status: 1, id: 1})
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-04-14
  • 2021-12-31
  • 2012-05-08
  • 2011-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多