2017-03-28 16 views
0

C#でMongoDBを使い始めました。私はレストランのサンプルデータ(https://raw.githubusercontent.com/mongodb/docs-assets/primer-dataset/primer-dataset.json)を使用します。MongoDBの結果をリスト要素フィールドの集計でソート

私が理解しようとしているのは、レストランをどのように評価点数の合計で並べ替えることができるかということです。誰かがAggregateFluent APIを使用してそれを行う方法のサンプルを提供できますか?私はそれで迷った。

ありがとうございます!

答えて

1

私はあなたのコレクションのためにDTOクラス作成します。

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;} 
} 

をそして、あなたのようにあなたのコレクションを作成する場合:

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

あなたは自分の結果をこのように注文することができます:

collection 
    .Aggregate() 
    .Project(r => new {Restarant = r.name, TotalScore= r.grades.Sum(g=>g.score)}) 
    .SortByDescending(x=>x.TotalScore) 
    .ToList() 
関連する問題