sql >> Database >  >> NoSQL >> MongoDB

Als Mongo $lookup een left outer join is, hoe komt het dan dat niet-overeenkomende documenten worden uitgesloten?

Dit gedrag is niet gerelateerd aan $lookup , komt dit omdat het standaardgedrag voor $unwind is om documenten weg te laten waar het veld waarnaar wordt verwezen ontbreekt of een lege array is.

Om de afgewikkelde documenten te behouden, zelfs wanneer profile.universities een lege array is, kunt u de preserveNullAndEmptyArrays . ervan instellen optie tot 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. locatie-object verwacht, locatie-array niet in de juiste indeling

  2. Verbindingspooling in Spring Boot en mongo db

  3. MongoDB $in Query-operator

  4. MongoDb-verificatie met Hibernate OGM