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

Филтрирайте масива от поддокументи, докато все още връщате родителски данни, ако е празен

Можете да използвате $redact вместо $match в този случай, като това

db.collectionName.aggregate({
  $redact:{
    $cond:{ 
       if:{$and:[{$not:"$dealerName"},{$not:"$title"},{$eq:["$listed",false]}, 
       then: "$$PRUNE", 
       else: "$$DESCEND" 
    }
  }
})

Нуждаем се от първо условие, за да прескочим документи от най-високо ниво, второ условие, за да прескочим второ ниво и трето, за да изрежем превозни средства. Не е необходимо $unwind в този случай!

Още нещо:$redact се предлага само във 2.6




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Разгръщане на Meteor Up, не може да използва meteor mongo --url

  2. Как да получите достъп до oplog MongoDB (набор реплики на MMS)

  3. Включете всички съществуващи полета и добавете нови полета към документа

  4. Намерете такъв или създайте с Mongoose

  5. Как да агрегирате MongoDB в Node.js