MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Agregacja MongoDB C# z LINQ

Możesz użyć składni LINQ, która zostanie przetłumaczona na składnię Aggregation Framework. Zakładając, że masz następujący Model klasa:

public class Model
{
    public DateTime Timestamp { get; set; }
    public float Value { get; set; }
}

możesz użyć where aby określić zakres sygnatury czasowej, a następnie użyj group z null jako klucz grupujący. Sterownik MongoDB przetłumaczy Min , Max i Average z typu anonimowego do $max , $min i $avg ze składni agregacji 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();

Listę akumulatorów obsługiwanych przez sterownik MongoDB można znaleźć tutaj .

EDYCJA:(Model)null jest wymagane, ponieważ zapytanie musi zostać przekształcone w $group z _id ustaw na null (dokumenty ), ponieważ chcesz uzyskać jeden wynik z agregatami. Rzutowanie jest wymagane tylko dla celów kompilatora C#, ponieważ dokument jest typu Model .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongodb nodejs - konwertowanie struktury kołowej

  2. Uruchamianie mongodb na ubuntu 16.04 LTS

  3. Mongodb unika zduplikowanych wpisów

  4. Błąd obsługi MongoDB podczas wstawiania w Javie

  5. Jak posortować kolekcję za pomocą ostatniego elementu tablicy?