如何解决聚合和 $lookup
我在 MongoDB 中有两个集合,我想从中生成一个报告。采集数据如下 学生
import os
import zipfile
import io
def zipfiles(filenames):
zip_filename = "archive.zip"
s = io.BytesIO()
zf = zipfile.ZipFile(s,"w")
for fpath in filenames:
# Calculate path for file in zip
fdir,fname = os.path.split(fpath)
# Add file,at correct path
zf.write(fpath,fname)
# Must close zip for all contents to be written
zf.close()
# Grab ZIP file from in-memory,make response with correct MIME-type
resp = Response(s.getvalue(),media_type="application/x-zip-compressed",headers={
'Content-disposition': f'attachment;filename={zip_filename}'
})
return resp
活动
[
{
_id:"1",name:"stu 1",class: "7th"
},{
_id:"2",name:"stu 2",{
_id:"3",class: "7th"
}
]
我想使用聚合管道生成的报告如下,我对 $loockup 管道感到震惊。有人可以帮我解决这个问题吗?
学生报告
[
{
_id:"1",studentIds:["1","3"],taskName:"Craft work 1"
},studentIds:["1"],taskName:"Craft work 2"
}
]
解决方法
我假设活动中的 studentIds
字段应该是一个数组。它似乎是一个错字。如果是这样,您可以使用以下方法汇总所需的输出:
https://mongoplayground.net/p/UBE0oNWLBsR
db.students.aggregate([
{
$lookup: {
"from": "activities","localField": "_id","foreignField": "studentIds","as": "tasks"
}
},{
$addFields: {
tasks: "$tasks.taskName"
}
}
])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。