sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDb:hitta djupt kapslade objekt med $lookup

Du kan hitta kapslad device med $filter, $arrayElemAt och $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 ] }
            }
        }
    }
}

Fullständig lösning




  1. Mongoose, CastError:Cast to Array misslyckades för värde när man försökte spara en modell som innehåller en modell

  2. Hur får man storleken på ett enda dokument i Mongodb?

  3. Hur får man samma rang för samma poäng i Redis ZRANK?

  4. Benchmark Apache HBase vs Apache Cassandra på SSD i en molnmiljö