MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Agregacja MongoDB w zakresie

Możesz użyć agregacji do grupowania według wszystkiego, co można obliczyć na podstawie dokumentów źródłowych, o ile dokładnie wiesz, co chcesz zrobić.

Na podstawie zawartości twojego dokumentu i przykładowych wyników, domyślam się, że sumujesz w odstępach dwudniowych. Oto jak napisać agregację, aby wyprowadzić to na przykładowych danych:

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 }

Zastąp swoje daty ciągami z zakresu1 i zakresu2 i opcjonalnie możesz filtrować, zanim zaczniesz operować tylko na dokumentach, które są już w pełnym zakresie, dla którego agregujesz.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mangusta document.save nie działa

  2. Dlaczego współrzędne wielokątów GeoJSON Objects są przechowywane w tablicy tablicy?

  3. Obsługa konfliktów podczas wyszukiwania, modyfikowania, zapisywania przepływu w MongoDB za pomocą Mongoose

  4. Konfigurowanie zestawu replik MongoDB

  5. Porównaj dwa pola tablicy w tym samym dokumencie