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

Foreign-feltet i $lookup kunne være feltet for indlejret dokument?

Der er ingen positionsoperator for $lookup, men du kan bruge tilpasset pipeline i MongoDB 3.6 for at definere tilpasset joinforbindelse betingelser :

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"
        }
    }
])

Første $match tilføjet for at forbedre ydeevnen:vi ønsker kun at finde de dokumenter fra childsgroup der indeholder matchende child_id og så kan vi matche underdokumenter efter $unwind scene.




  1. Appen fungerer under udvikling, men ikke når den implementeres til heroku

  2. Find alle dokumenter, hvor feltet ikke findes, plus, hvis feltet findes, anvend betingelse

  3. MongoDB begrænse lagerstørrelse?

  4. MongoDB deleteMany()