MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

MongoDB C # Aggregation với LINQ

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 , MaxAverage từ loại ẩn danh thành $max , $min$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 .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm cách nào để thêm người dùng quản trị vào Mongo trong phiên bản 2.6?

  2. Xóa các mục khỏi mảng tài liệu trong Spring + Mongo

  3. Cấu trúc và cú pháp truy vấn cho tài liệu đệ quy trong MongoDB?

  4. MongoDB:sự khác biệt giữa $ elemMatch và $ và để tìm các đối tượng bên trong mảng là gì?

  5. Các chỉ mục thưa thớt hợp chất MongoDB