簡體   English   中英

使用C#Mongodb驅動程序2.2,在特定字段上分組時如何查找最大記錄

[英]Using c# Mongodb driver 2.2, how to find max record when grouped by on a particular field

我有一個“ UserRecords”集合。 其結構如下

  {
    "_id" : "ee654ce6-e50d-4243-8738-35c087a85e67",
    "_t" : "Animals",
    "ClickedOn" : NumberLong(1452600122),    
    "Category" : "Nature",
    "UserId" : "a1",   
  }

 {
  "_id" : "ee654ce6-e50d-4243-8738-35c087a85e67",
  "_t" : "Abstract",
  "ClickedOn" : NumberLong(1247634566),    
  "Category" : "Modern",
  "UserId" : "a1",   
 }

{
  "_id" : "ee654ce6-e50d-4243-8738-35c087a85e67",
  "_t" : "Abstract",
  "ClickedOn" : NumberLong(1247634440),    
  "Category" : "Modern",
  "UserId" : "a1",   
}

和更多...

現在我想為每個類別點擊“ Max”。 使用最新的Mongo C#驅動程序類似

    select Max(clicked) from table group by Category in SQL.

可以使用MongoDB 聚合框架有效地處理此類查詢。 但是,查詢是用JSON編寫的,因此使其難以閱讀。

var dataCollection = Database.GetCollection("UserRecords");
var AggArgs = new AggregateArgs {
    Pipeline =
        new[] {BsonDocument.Parse(@"{$group : {_id : '$Category', ClickedOn : {$max : '$ClickedOn'}}}")}
};
foreach (var result in dataCollection.Aggregate(AggArgs))
{
    Console.WriteLine($"Category: {result["_id"]} Clicked: {result["ClickedOn"]}");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM