mongodb获取最大计数的文档

时间:2016-02-17 15:36:59

标签: c# mongodb

我有一个以下列格式存储文档的集合:

"_id" : ObjectId("56c48ffa6a650517eccd147b"),
"Token" : "diamond",
"sentence_id" : ObjectId("5665627c6a650522082d5209")

字段标记

中有重复值
"_id" : ObjectId("56c48ffa6a650517eccd147c"),
"Token" : "diamond",
"sentence_id" : ObjectId("5665627c6a650522082d5230")

我需要获得具有更高计数值的十大代币。我需要用C#编写这个查询。任何人都可以帮忙??

1 个答案:

答案 0 :(得分:0)

您可以使用C#: AggregationToken字段执行分组,并按Token次出现次数排序。

例如,在C#中执行此操作:

var aggregate = collection.Aggregate()
                          // Group by Token, and count occurrences
                          .Group(new BsonDocument { 
                                         { "_id", "$Token" }, 
                                         { "count", new BsonDocument("$sum", 1) } })
                          // Sort by count number
                          .Sort(new BsonDocument { { "count", -1 } })
                          // Limit only top ten
                          .Limit(10);
        var results = await aggregate.ToListAsync();
        foreach (var obj in results)
        {
            Console.WriteLine(obj.ToString());
        }

有关代码,请参阅gist: simple aggregation。代码是用.Net v4.5.2和mongocsharpdriver-2.2.3编写的。

另请查看MongoDB Aggregation及其list of available operators以获取更多信息。您可能还对$out operator感兴趣,可以将聚合的输出存储在集合中以供日后使用。

希望有所帮助。