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

Agregace MongoDB v rozsahu

Agregaci můžete použít k seskupení podle čehokoli, co lze vypočítat ze zdrojových dokumentů, pokud přesně víte, co chcete dělat.

Na základě obsahu vašeho dokumentu a ukázkového výstupu předpokládám, že sčítáte po dvoudenních intervalech. Zde je návod, jak byste zapsali agregaci pro výstup na vaše ukázková data:

var range1={$and:[{"$gte":["$date","2014-07-07"]},{$lte:["$date","2014-07-08"]}]}
var range2={$and:[{"$gte":["$date","2014-07-09"]},{$lte:["$date","2014-07-10"]}]}
db.range.aggregate(
    {$project:{
         dateRange:{$cond:{if:range1, then:"dateRange1",else:{$cond:{if:range2, then:"dateRange2", else:"NotInRange"}}}},
         value:1}
    }, 
    {$group:{_id:"$dateRange", sum:{$sum:"$value"}}}
)
{ "_id" : "dateRange2", "sum" : 45 }
{ "_id" : "dateRange1", "sum" : 49 }

Nahraďte svá data za řetězce v rozsahu1 a rozsahu2 a volitelně můžete filtrovat, než začnete pracovat pouze s dokumenty, které jsou již v plném rozsahu, ve kterém agregujete.




  1. Jak zabezpečit MongoDB pomocí uživatelského jména a hesla

  2. Jak vrátit primární klíč Redis prostřednictvím výstupu šablony ARM?

  3. Cloudera Impala:Dotazy v reálném čase v Apache Hadoop, ve skutečnosti

  4. převést datum iso na časové razítko v dotazu mongo