sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvis Mongo $lookup er en venstre ydre joinforbindelse, hvorfor udelukker den så ikke-matchende dokumenter?

Denne adfærd er ikke relateret til $lookup , det er fordi standardadfærden for $unwind er at udelade dokumenter, hvor det refererede felt mangler eller et tomt array.

For at bevare de afviklede dokumenter, selv når profile.universities er et tomt array, kan du indstille dets preserveNullAndEmptyArrays mulighed for at true :

db.users.aggregate([
    {
        $unwind: "$profile",
        $unwind: {
            path: "$profile.universities",
            preserveNullAndEmptyArrays: true
        }
    },
    {
        $lookup: {
            from: "universities",
            localField: "profile.universities._id",
            foreignField: "_id",
            as: "profile.universities"
        }
    },
    {
        $group: {
            _id: "$_id",
            universities: {
                $addToSet: "$profile.universities"
            }
        }
    }
]).pretty()



  1. mongodb nodejs - konvertering af cirkulær struktur

  2. Hvordan installerer jeg mongodb på beaglebone black

  3. forespørgsel for at hente flere objekter i et array i mongodb

  4. Regex med OR i Java - mongoDB