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
.