sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB C# Agregace s LINQ

Můžete použít syntaxi LINQ, která se přeloží do syntaxe Aggregation Framework. Za předpokladu, že máte následující Model třída:

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

můžete použít where zadejte rozsah časového razítka a poté použijte group s null jako seskupovací klíč. Ovladač MongoDB přeloží Min , Max a Average z anonymního typu na $max , $min a $avg ze syntaxe Agregation 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();

Seznam akumulátorů podporovaných ovladačem MongoDB naleznete zde .

EDIT:(Model)null je vyžadován, protože dotaz musí být transformován na $group s _id nastavte na null (dokumenty ), protože chcete získat jeden výsledek s agregací. Casting je vyžadován pouze pro účely kompilátoru C#, protože doc je typu Model .



  1. nelze vytvořit základní mongo shell skript s ověřováním

  2. Mongo:agregujte $geoNear a $text žádné výsledky

  3. Sdílet relace s redis a passport na subdoméně?

  4. Aktualizace MongoDB s podmínkou