$lookup
user
. के साथ संग्रह
$unwind
deconstruct id_user
सरणी
$lookup
language
. के साथ संग्रह और वापसी languages
. में फ़ील्ड
$map
id_user.language
. के रूप को पुनरावृत्त करने के लिए सरणी
$reduce
languages
. के लूप को पुनरावृत्त करने के लिए संग्रह से लौटा सरणी, अगर language_id
. की स्थिति की जाँच करें मैच फिर name
return लौटाएं
db.cvsubmit.aggregate([
{
$lookup: {
from: "user",
localField: "id_user",
foreignField: "_id",
as: "id_user"
}
},
{ $unwind: "$id_user" },
{
$lookup: {
from: "language",
localField: "id_user.language.language_id",
foreignField: "_id",
as: "languages"
}
},
{
$addFields: {
languages: "$$REMOVE",
"id_user.language": {
$map: {
input: "$id_user.language",
as: "l",
in: {
_id: "$$l._id",
level: "$$l.level",
name: {
$reduce: {
input: "$languages",
initialValue: "",
in: {
$cond: [
{ $eq: ["$$this._id", "$$l.language_id"] },
"$$this.name",
"$$value"
]
}
}
}
}
}
}
}
}
])
खेल का मैदान