Bạn có thể sử dụng cú pháp LINQ được dịch sang cú pháp của Aggregation Framework. Giả sử bạn có Model sau lớp:
public class Model
{
public DateTime Timestamp { get; set; }
public float Value { get; set; }
}
bạn có thể sử dụng where để chỉ định phạm vi dấu thời gian và sau đó sử dụng group với null làm khóa nhóm. Trình điều khiển MongoDB sẽ dịch Min , Max và Average từ loại ẩn danh thành $max , $min và $avg từ cú pháp Khung tổng hợp
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();
Có thể tìm thấy danh sách các bộ tích lũy được trình điều khiển MongoDB hỗ trợ tại đây .
CHỈNH SỬA:(Model)null là bắt buộc vì truy vấn phải được chuyển đổi thành $group với _id đặt thành null ( tài liệu
) vì bạn muốn nhận được một kết quả với các tổng hợp. Truyền được yêu cầu chỉ cho mục đích của trình biên dịch C # vì doc thuộc loại Model .