MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Рамка за агрегиране на MongoDB - Как да съпоставим по диапазон от дати, групиране по дни и връщане на средна стойност за всеки ден?

Проблемът изглежда е с _id използвате за $group. Трябва да групирате по $day вместо null , ако искате да групирате резултатите по дни. Опитайте това:

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

Въпреки това не е необходимо да съхранявате деня и часа като отделни елементи в документа. Това са излишни данни. Можете да извлечете day и hour от date поле в заявката за агрегиране, използвайки Date Aggregation оператори.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Включете всички съществуващи полета и добавете нови полета към документа

  2. Как да получа данни от масив в mongoose?

  3. Как да се свържете с екземпляр на MongoDB EC2

  4. MongoDB вложено търсене с 3 нива

  5. Асинхронно групово (партидно) вмъкване в MySQL (или MongoDB?) чрез Node.js