I have a collection called of rewarded that have a foreign key from the hunters and rewards collection, I would like to make a query that does not return me hunter_id and reward_id, but return me reward_description (instead of reward_id) and name_hunter (instead of hunter_id). I am using MongoDB Shell in Visual Studio.
- MongoDB query
db.rewarded.aggregate([
{
$lookup: {
from: "rewards",
localField: "_id",
foreignField: "reward_id",
as: "reward"
}
},
{
$lookup: {
from: "hunters",
localField: "_id",
foreignField: "hunter_id",
as: "hunter"
}
},
{
$project: {
_id: 1,
reward_description: { $arrayElemAt: ["$reward.reward_description", 0] },
hunter_name: { $arrayElemAt: ["$hunter.hunter_name", 0] },
done: 1,
}
}
])
- Returned result
[
{ _id: ObjectId('65d20aa58d4389ed540a9f56'), done: true },
}
- That i wanted
[
{ _id: ObjectId('65d20aa58d4389ed540a9f56'), reward_description: 'Capture Genei Ryodan members', name_hunter: 'Killua', done: true }
]
My collections are:
- hunters
{
_id: ObjectId('65d20a6b8d4389ed540a9f54'),
name_hunter: 'Killua'
},
- rewards
{
_id: ObjectId('65d20a208d4389ed540a9f52'),
reward_description: 'Capture Genei Ryodan members'
},
- rewarded
{
_id: ObjectId('65d20aa58d4389ed540a9f56'),
reward_id: '65d20a208d4389ed540a9f52',
hunter_id: '65d20a6b8d4389ed540a9f54',
done: true,
},