Du kan bruge aggregering til at gruppere efter alt, der kan beregnes fra kildedokumenterne, så længe du ved præcis, hvad du vil gøre.
Baseret på dit dokumentindhold og prøveoutput, gætter jeg på, at du summerer med to dages intervaller. Sådan skriver du aggregering for at udlæse dette på dine eksempeldata:
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 }
Erstat dine datoer med strenge i interval1 og range2, og du kan eventuelt filtrere, før du begynder kun at operere på dokumenter, som allerede er inden for det fulde interval, du samler over.