我有一个以下列格式存储文档的集合:
"_id" : ObjectId("56c48ffa6a650517eccd147b"),
"Token" : "diamond",
"sentence_id" : ObjectId("5665627c6a650522082d5209")
字段标记
中有重复值"_id" : ObjectId("56c48ffa6a650517eccd147c"),
"Token" : "diamond",
"sentence_id" : ObjectId("5665627c6a650522082d5230")
我需要获得具有更高计数值的十大代币。我需要用C#编写这个查询。任何人都可以帮忙??
答案 0 :(得分:0)
您可以使用C#: Aggregation按Token
字段执行分组,并按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感兴趣,可以将聚合的输出存储在集合中以供日后使用。
希望有所帮助。