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

MongoDB агрегиране в диапазон

Можете да използвате агрегиране, за да групирате по всичко, което може да бъде изчислено от изходните документи, стига да знаете точно какво искате да направите.

Въз основа на съдържанието на вашия документ и примерния резултат, предполагам, че сумирате на интервали от два дни. Ето как бихте написали агрегиране, за да изведете това на вашите примерни данни:

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 }

Заменете вашите дати с низове в диапазон 1 и диапазон 2 и по желание можете да филтрирате, преди да започнете да работите само с документи, които вече са в пълните диапазони, върху които обобщавате.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Spring Data-MongoDb Опции за метод на агрегиране

  2. MongoDB с поддокументи за ограничение на Mongoose

  3. Заявката за дата с ISODate в mongodb изглежда не работи

  4. mongo find заявка за joda datetime

  5. Как да актуализирам конкретен ключ в поддокумент на MongoDB с помощта на Sails.js &Waterline?