संग्रह A जिसमें B के साथ एक विदेशी है, B के पास C के साथ एक विदेशी है, मैं एक विदेशी को संग्रह C से कैसे ला सकता हूं? (सकल)
Nov 28 2020
मेरे 3 संग्रह हैं:
country
{
"_id": "5fbc7cc705253c2da4820425",
"country":"USA"
}
city
{
"_id": "5fbc7cc705253c2da482025f",
"city": "New York",
"country_id":"5fbc7cc705253c2da4820425",
}
travel_reservation
{
"_id":"5fbc7cc705253c2da48202yQ"
"name_person":"pablo rojas",
"city_id":"5fbc7cc705253c2da482025f"
}
एक country
संग्रह, एक city
संग्रह और एक यात्रा बुकिंग संग्रह ( travel_booking
)। फिर यात्रा बुकिंग संग्रह ( travel_booking
) में एक व्यक्ति के पास एक संबद्ध शहर ( city_id
) है।
मैं निम्नलिखित की तरह एक संरचना कैसे बना सकता हूं ?, जहां नाम प्राप्त करने के अलावा city
, मैं नाम भी प्राप्त कर सकता हूं country
।
आउटपुट वांछित:
{
"_id":"5fbc7cc705253c2da48202yQ",
"name_person":"pablo rojas",
"city":{
"_id":"5fbc7cc705253c2da482025f",
"city":"New York"
},
"country":{
"_id":"5fbc7cc705253c2da4820425",
"country":"USA"
}
}
मैंने यह कोशिश की है:
https://mongoplayground.net/p/JVhroCubElX
जवाब
1 turivishal Nov 28 2020 at 17:41
$lookup
शहर के संग्रह में शामिल हों$lookup
देश संग्रह में शामिल हों$project
आवश्यक फ़ील्ड दिखाने के लिए, उपयोगcity
औरcountry
उपयोग से पहला तत्व प्राप्त करें$first
db.travel_reservation.aggregate([
{
$lookup: { from: "city", localField: "city_id", foreignField: "_id", as: "city" } }, { $lookup: {
from: "country",
localField: "city.country_id",
foreignField: "_id",
as: "country"
}
},
{
$project: { name_person: 1, city: { $first: "$city" }, country: { $first: "$country" }
}
}
])
खेल का मैदान