sql >> Database >  >> NoSQL >> MongoDB

Het veld Foreign van $lookup kan het veld van een genest document zijn?

Er is geen positionele operator voor $lookup, maar u kunt een aangepaste pipeline gebruiken in MongoDB 3.6 om aangepaste join te definiëren voorwaarden :

db.history.aggregate([
    {
        $lookup: {
            from: "childsgroup",
            let: { child_id: "$child_id" },
            pipeline: [
                { $match: { $expr: { $in: [ "$$child_id", "$childs.id" ] } } },
                { $unwind: "$childs" },
                { $match: { $expr: { $eq: [ "$childs.id", "$$child_id" ] } } },
                { $replaceRoot: { newRoot: "$childs" } }
            ],
            as: "childInfo"
        }
    }
])

Eerste $match toegevoegd om de prestaties te verbeteren:we willen alleen die documenten vinden van childsgroup die overeenkomende child_id . bevatten en dan kunnen we subdocumenten matchen na $unwind podium.




  1. Wat is de juiste manier om met Mongodb-verbindingen om te gaan?

  2. MongoDB:er is een time-out opgetreden na 30000 ms bij het selecteren van een server met CompositeServerSelector

  3. Wat is het verschil tussen id en _id in mangoest?

  4. Typescript:diepe sleutel van een genest object, met gerelateerd type