sql >> Databáze >  >> NoSQL >> MongoDB

Cizí pole $lookup by mohlo být polem vnořeného dokumentu?

$lookup nemá žádný poziční operátor, ale můžete použít vlastní pipeline v MongoDB 3.6 k definování vlastního spojení podmínky :

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

První $match přidáno pro zlepšení výkonu:chceme najít pouze ty dokumenty z childsgroup které obsahují odpovídající child_id a pak můžeme spárovat vnořené dokumenty po $unwind fázi.




  1. Laravel 5.2 Mongo MonogDB Nepodařilo se analyzovat URI MongoDB

  2. Nepřímá úprava přetížené vlastnosti App\Dossier::$program nemá žádný účinek

  3. jak aktualizovat číselné pole pomocí jiného číselného pole v MongoDB

  4. Spring Data MongoDB:Převod BigInteger na ObjectId