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

MongoDB.Driver.Builders cách nhóm và lấy điểm trung bình

với trình điều khiển MongoDB .NET mới (2.0 - http://docs.mongodb.org/ecosystem/drivers/csharp/), hỗ trợ Linq được cung cấp đầy đủ, đây là tổng hợp của câu hỏi chỉ định trình điều khiển mới. Mã .NET dễ đọc hơn nhiều trước khi sử dụng cú pháp BsonDocument.

    public async Task<List<DailyStat>> GetLast31DaysReport(string id)
    {
        var mc = new MongoClient(_url);
        var db = mc.GetDatabase(DbName);
        var collection = db.GetCollection<Reading>(CollectionName);

        DateTime from = DateTime.Now.AddDays(-31);
        DateTime to = DateTime.Now;

        var output = await collection.Aggregate()
            .Match(r => r.SensorId == id)
            .Match(r => r.Date <= to)
            .Match(r => r.Date >= to.AddDays(-31))
            .Group(r => new { groupedYear = r.Date.Year, groupedMonth = r.Date.Month, groupedDay = r.Date.Day }, g =>
                new {
                    Key = g.Key,
                    avgValue = g.Average(x => x.Value),
                    minValue = g.Min(x => x.Value),
                    maxValue = g.Max(x => x.Value)
                })
            .Project(r => new DailyStat()
                {
                    Day = r.Key.groupedDay,
                    Month = r.Key.groupedMonth,
                    Year = r.Key.groupedYear,
                    Value = r.avgValue,
                    MinValue = r.minValue,
                    MaxValue = r.maxValue
                })
            .ToListAsync().ConfigureAwait(false);

        var returnList = new List<DailyStat>();
        while (returnList.Count < 31)
        {
            var value = output.FirstOrDefault(rec => rec.Day == from.Day && rec.Month == from.Month && rec.Year == from.Year);
            returnList.Add(value ?? new DailyStat() { Month = from.Month, Year = from.Year, Day = from.Day, Value = 0, MaxValue = 0, MinValue = 0 });
            from = from.AddDays(1);
        }
        return returnList;
    }



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Nếu tôi có id tài liệu mongo dưới dạng một chuỗi, làm cách nào để truy vấn nó dưới dạng _id?

  2. dịch vụ sudo mongodb khởi động lại gây ra lỗi dịch vụ không được công nhận trong ubuntu 14.0.4

  3. Việc rút ngắn tên thuộc tính MongoDB có đáng giá không?

  4. Sự khác biệt giữa Find và FindAsync

  5. Không thể khởi động mongod.service:Không tìm thấy đơn vị mongod.service