sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB-aggregering over et interval

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.




  1. MongoDB Atlas fejl:ugyldigt skema, forventet mongodb

  2. Databasestørrelsen på disken øges som et multiplum af CSV-filen, jeg mongoimporterer?

  3. Tilføjelse af værdier til et array i MongoDB med Java

  4. Tips til fjernstyring af MongoDB