sql >> Database >  >> NoSQL >> MongoDB

MongoDB C#-aggregatie met LINQ

U kunt LINQ-syntaxis gebruiken die wordt vertaald in de syntaxis van Aggregation Framework. Ervan uitgaande dat u het volgende Model hebt klas:

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

je kunt where . gebruiken om het tijdstempelbereik op te geven en gebruik vervolgens group met null als groeperingssleutel. MongoDB-stuurprogramma vertaalt Min , Max en Average van anoniem type naar $max , $min en $avg van de syntaxis van het aggregatieraamwerk

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();

Lijst met accumulatoren die worden ondersteund door MongoDB-stuurprogramma is te vinden hier .

EDIT:de (Model)null is vereist omdat de zoekopdracht moet worden omgezet in $group met _id ingesteld op null (docs ) omdat u één resultaat wilt krijgen met aggregaten. Casting is alleen vereist voor C#-compilerdoeleinden, aangezien doc van het type Model is .



  1. hoe een samengestelde index in mongodb te structureren

  2. Vreemde reactie bij het vinden van documenten in MongoDB met Mongoose in Node.js

  3. Hoe gebruik ik Redis binnen een C++ programma?

  4. Prestaties van Redis vs Disk in caching-applicatie