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

Filtrovat pole vnořených dokumentů a stále vracet nadřazená data, pokud jsou prázdná

V tomto případě můžete použít $redact místo $match, jako je tento

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

Potřebujeme první podmínku k přeskočení dokumentů nejvyšší úrovně, druhou podmínku k přeskočení druhé úrovně a třetí k ořezání vozidel. Není potřeba $unwind v tomto případě!

Ještě jedna věc:$redact je k dispozici pouze ve verzi 2.6




  1. MongoDB / Morphia ukládá technické ID jako ObjectId, i když je to řetězec v Javě

  2. Vložte data do vnitřního pole v MongoDB

  3. Jak nastavit připojení k Redis Sentinel pomocí knihovny Jedis?

  4. ekvivalent mongodb num_rows php