Anda dapat menggunakan agregasi untuk mengelompokkan berdasarkan apa pun yang dapat dihitung dari dokumen sumber, selama Anda tahu persis apa yang ingin Anda lakukan.
Berdasarkan konten dokumen dan keluaran sampel Anda, saya menduga Anda menjumlahkan dengan interval dua hari. Inilah cara Anda menulis agregasi untuk menampilkan ini pada data sampel Anda:
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 }
Ganti tanggal Anda untuk string dalam range1 dan range2 dan secara opsional Anda dapat memfilter sebelum Anda mulai hanya beroperasi pada dokumen yang sudah berada dalam rentang penuh yang Anda gabungkan.