上有AggregateGroupTranslatorTests.cs一些很好的例子,这是为MongoDB .NET Driver: aggregation group测试文件。
举例来说,如果你有这样的类定义:
public class ExampleGroup
{
[BsonId]
public ObjectId Id {get;set;}
public string SomeStringField { get; set; }
public int SomeNumberField {get; set;}
}
你想的
{ _id: "$SomeStringField", Result: { "$max": "$SomeNumberField" } }
进行分组,您可以如下执行:
var result = collection.Aggregate()
.Group(
x => x.SomeStringField,
g => new {
Result = g.Select(
x => x.SomeNumberField
).Max()
}
).ToList();
result.ForEach(doc => Console.WriteLine(doc.ToJson()));
的上面的代码片段在.Net 4.5,MongoDB 3.4和MongoDB .Net/C#Driver v2.3上进行了测试。我知道你使用的是v2.2,但是项目定义分组没有(或任何)更改。
还检查了其他LINQ翻译测试MongoDB.Driver.Tests/Linq/Translators