Ben önceden biriktirilmiş olan raporlar, bkz: https://docs.mongodb.org/ecosystem/use-cases/pre-aggregated-reports/#one-document-per-page-per-dayMongoDB, raporları birden çok gün içinde zaman dilimleri için toplamak için nasıl kullanılır? mongodb docs aşağıdaki
{
_id: "20101010/site-1/apache_pb.gif",
metadata: {
date: ISODate("2000-10-10T00:00:00Z"),
site: "site-1",
page: "/apache_pb.gif" },
daily: 5468426,
hourly: {
"0": 227850,
"1": 210231,
...
"23": 20457 },
minute: {
"0": 3612,
"1": 3241,
...
"1439": 2819 }
}
böyle geri x günlerce görüşlerini bir araya toplar:
db.collection.aggregate(
{ $match : { date: { $gte : ISODate("2016-04-07T00:00:00.000Z")}}},
{ $group: {_id: "_id", views: {$sum: "$daily"}}},
{ $sort: {views: -1}}
)
Şimdi istediğim Son x saatin görüşleri. Sorun burada tarih satırı. Aynı gün içinde olduğum sürece çözümüm gayet iyi çalışıyor, ama tarih çizgisini en iyi şekilde nasıl geçiyor? İşte
ben ne var: Bazı araştırmadan sonradb.collection.aggregate(
{ $match : { date: { $eq : ISODate("2016-04-07T00:00:00.000Z")}}},
{ $group: {_id: "$_id", views: { $sum: { $add: [ '$hourly.1', '$hourly.2', ... ] }} }},
{ $sort: {views: -1}}