我正在使用Mongo 4.2。我有一个包含两个数组的文档集合:studentMcqs和mcq:
studentMcqs:[0:{
cudacodec
}, 1:{....}]
mcq:[0:{
"id": 2024,
"answer": "C",
"bookMarked": false,
"mcqId": 408041
},1:{....}]
我想将所有mcq.id与studentMcqs.mcqId进行比较,如果匹配,则将mcqSubject对象添加到studentMcqs数组中。 想通过聚合管道做到这一点
答案 0 :(得分:0)
您可以做这样的事情
db.collection.aggregate([
{
$unwind: "$studentMcqs"
},
{
$unwind: "$mcqs"
},
{
$project: {
mcqs: 1,
studentMcqs: 1,
comp_value: {
$cmp: [
"$mcqs.id",
"$studentMcqs.mcqId"
]
}
}
},
{
$match: {
comp_value: {
$eq: 0
}
}
},
{
$project: {
studentMcqs: {
answer: 1,
bookMarked: 1,
id: 1,
mcqId: 1,
mcqSubject: "$mcqs.mcqSubject"
}
}
},
{
$group: {
_id: "$_id",
studentMcqs: {
$push: "$studentMcqs"
}
}
}
])
您可以查看工作示例here