MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDB C# Агрегиране с LINQ

Можете да използвате 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 .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB:Наличие на вложен ключ

  2. Най-добри практики за стартиране на MongoDB в клъстер

  3. Настройване на множество Docker контейнери и MongoDB за работа в CircleCI

  4. Разумни настройки по подразбиране за MongoDB на OSX?

  5. Новакът не може да получи JSON