sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB Aggregation Framework - Hur matchar man efter datumintervall, grupperar efter dagar och avkastningsmedelvärde för varje dag?

Problemet verkar vara med _id du använder för $group. Du bör gruppera efter $day istället för null , om du vill gruppera resultaten efter dag. Prova detta:

PriceHourly.aggregate([
    { $match: { date: { $gt: start, $lt: end } } },
    { $group: { _id: "$day", price: { $avg: '$price' } } }
], function(err, results){
    console.log(results); 
});

Som sagt, du behöver inte lagra dagen och timmen som separata element i dokumentet. Det är redundant data. Du kan extrahera day och hour från date fältet i aggregeringsfrågan med Date Aggregation operatörer.




  1. Minsta behörighet för att använda mongodump (för att dumpa en specifik db)

  2. ScaleGrid Hosting lägger till stöd för högt tillgängliga Redis™-kluster med automatisk delning

  3. MongoDB $toBool

  4. MongoDB listar tillgängliga databaser i java