0

Je viens de commencer à jouer avec MongoDB sur C#. J'utilise les données d'échantillon de restaurant (https://raw.githubusercontent.com/mongodb/docs-assets/primer-dataset/primer-dataset.json). Ce que j'essaie de comprendre est, comment je peux trier les restaurants par le total de leur score de notation. Quelqu'un peut-il fournir un exemple sur la façon de le faire en utilisant l'API AggregateFluent? Je me suis perdu avec ça.Trier résultat MongoDB sur l'agrégation de la zone élément de la liste

Merci!

Répondre

1

Je créer des classes DTO pour votre collection:

public class Restaurant 
{ 
    public ObjectId _id { get; set; } 
    public address address { get; set; } 
    public string borough { get; set; } 
    public string cuisine { get; set; } 
    public grades[] grades {get;set;} 
    public string name { get; set; } 
    public string restaurant_id {get;set;} 
} 

public class grades 
{ 
    public DateTime date {get;set;} 
    public string grade {get;set;} 
    public int? score {get;set;} 
} 

public class address 
{ 
    public string building { get; set; } 
    public double[] coord { get; set; } 
    public string street { get; set; } 
    public string zipcode { get; set;} 
} 

Et si vous créez votre collection comme:

var collection = db.GetCollection<Restaurant>("restaurants"); 

vous pouvez simplement commander votre résultat de cette façon:

collection 
    .Aggregate() 
    .Project(r => new {Restarant = r.name, TotalScore= r.grades.Sum(g=>g.score)}) 
    .SortByDescending(x=>x.TotalScore) 
    .ToList()