我是一个初学者,没有SQL数据库,我如何将以下SQL查询转换为Mongodb查询?
select e.empno,sum(f.points)
from employee e, assignment a, finalreport f
where e.empno = a.empno and a.assid = f.assid
group by e.empno
我想要得到分配了任务的员工的总得分。有三个表employee, assignment和finalreport。积分在期末报告表中。
您可以通过几种不同的方式做到这一点,我将展示使用$lookup的最简单方法,它相当于sqljoin
(或者更确切地说是"左外连接")。
db.employees.aggregate([
{
"$lookup": {
"from": "assignment",
"localField": "empno",
"foreignField": "empno",
"as": "assignments"
}
},
{
"$lookup": {
"from": "finalreport",
"localField": "assignments.assid",
"foreignField": "assid",
"as": "reports"
}
},
{
$project: {
points: {
$sum: {
$map: {
input: "$reports",
in: "$$this.points"
}
}
},
empno: 1
}
}
])
Mongo操场