संग्रह 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" }
    }
  }
])

खेल का मैदान