MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDb:намерете дълбоко вложен обект с $lookup

Можете да намерите вложено device използвайки $filter, $arrayElemAt и $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 ] }
            }
        }
    }
}

Пълно решение




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Позволете на новия ClusterControl да защити вашите внедрявания на MongoDB

  2. Какви са правилата за плурализиране на Mongoose (Nodejs)?

  3. Пролетните данни mongo използват ИЛИ в заявка

  4. Сървърът на MongoDB все още може да бъде достъпен без идентификационни данни

  5. Заявка за регулярни изрази на Node.js и Mongoose в множество полета