Можете да използвате LINQ синтаксис, който се превежда в синтаксиса на Aggregation Framework. Ако приемем, че имате следния Model
клас:
public class Model
{
public DateTime Timestamp { get; set; }
public float Value { get; set; }
}
можете да използвате where
за да посочите диапазон на клеймото и след това използвайте group
с null
като ключ за групиране. Драйверът MongoDB ще преведе Min
, Max
и Average
от анонимен тип в $max
, $min
и $avg
от синтаксиса на Aggregation Framework
var q = from doc in Col.AsQueryable()
where doc.Timestamp > DateTime.Now.AddDays(-3)
where doc.Timestamp < DateTime.Now.AddDays(3)
group doc by (Model)null into gr
select new
{
Avg = (double)gr.Average(x => x.Value),
Min = gr.Min(x => x.Value),
Max = gr.Max(x => x.Value)
};
var result = q.First();
Списък с акумулатори, поддържани от драйвера MongoDB, може да бъде намерен тук .
РЕДАКТИРАНЕ:(Model)null
се изисква, защото заявката трябва да се трансформира в $group
с _id
зададено на null
(документи
), тъй като искате да получите един резултат с агрегати. Кастингът е необходим само за целите на C# компилатора, тъй като документът е от тип Model
.