我正在构建一个应用程序,可以在其中将员工添加到数据库中,并且每个员工都属于一个特定的公司,可以从表单上的选择字段中进行选择。添加员工的表单中还包含一个薪金字段,我希望能够显示公司及其薪金总额(基于其员工的薪金总额)。
起初,我以为我会使用一个“员工”集合。然后,例如,选择“ Apple”作为公司,最后,最后得到一个员工对象列表,在其中可以遍历“ Apple”是公司的所有员工并汇总所有薪水领域。最终这是一个糟糕的方法。接下来,我决定创建一个单独的“公司”集合。然后,在保存员工之前,我先查找公司对象ID,然后将其另存为公司。
例如,
{ firstName: "Bob", lastName, "Smith", company: "5b62a456e7179a07334478a5", salary: 7}
"5b62a456e7179a07334478a5"
是Apple的“ _id”字段。
如何继续在MongoDB中定义此关系?
我是否将雇员字段添加到每个公司,并在将每个雇员保存到雇员集合后尝试将其保存到公司?这样,我可以尝试访问每个公司内所有雇员的总和,以获得总薪金费用。
但是,每次保存新员工时,我将不得不写两个不同的集合。另外,它的流程会是什么样子?我需要使用company _id字段来查找公司,然后将员工保存到公司中。因此,我是否必须对每个新员工执行一次查询并执行两次写入操作?
答案 0 :(得分:0)
您可以使用查找功能进行“加入”
db.table1.aggregate([{
$lookup: {
from: "table2",
localField: "table2column",
foreignField: "table1key",
as: "alias"
},
{
$project:{
//columns you want
}
}
}])
话虽这么说...如果您的数据是关系数据而不是巨大的数据,那么关系数据库可能是一个更好的选择。