sql >> Database >  >> NoSQL >> MongoDB

MongoDB Aggregation Framework - Hoe matchen op datumbereik, groeperen op dagen en gemiddeld rendement voor elke dag?

Het probleem lijkt te zijn met de _id u gebruikt voor $group. Je moet groeperen op $day in plaats van null , als u de resultaten per dag wilt groeperen. Probeer dit:

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

Dat gezegd hebbende, hoeft u de dag en het uur niet als afzonderlijke elementen in het document op te slaan. Het zijn overbodige gegevens. U kunt de day . extraheren en hour vanaf date veld in de aggregatiequery met behulp van de Date Aggregation operators.




  1. Geneste array $pull-query met behulp van C# MongoDB-stuurprogramma

  2. Mangoest:alfabetisch sorteren

  3. MongoDB $-operator

  4. MongoDB-opdrachten vanuit DOS of Windows