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

MongoDb:najděte hluboce vnořený objekt pomocí $lookup

Můžete najít vnořené device pomocí $filter, $arrayElemAt a $let:

device: {
    $let: {
        vars: {
            building: { 
                $arrayElemAt: [ { $filter: { input: "$company_name.buildings", cond: { $eq: [ "$$this._id", "$buildingId" ] }} }, 0 ] 
                }
        },
        in: {
            $let: {
                vars: {
                    gateway: {
                        $arrayElemAt: [ { $filter: { input: "$$building.gateways", cond: { $eq: [ "$$this._id", "$gatewayId" ] }} }, 0 ] 
                    }
                },
                in: { $arrayElemAt: [ { $filter: { input: "$$gateway.devices", cond: { $eq: [ "$$this._id", "$deviceId" ] }} }, 0 ] }
            }
        }
    }
}

Úplné řešení




  1. Mongo agregace Shoda více hodnot

  2. Redis:NOAUTH Vyžaduje se ověření, ale není nastaveno žádné heslo

  3. Jak získat velikost jednoho dokumentu v Mongodb?

  4. Dockeru se nedaří spustit koleje