Mongodb C#-如何按多个字段分组(聚合)
文档如下所示:Mongodb C#-如何按多个字段分组(聚合),c#,mongodb,aggregation-framework,mongodb-.net-driver,C#,Mongodb,Aggregation Framework,Mongodb .net Driver,文档如下所示: { Age: 20, Gender: "Male", SomeField: "ABC" SomeParameter: 17.7 } 使用C#mongodb驱动程序,您如何编写这样的代码 SELECT Age, Gender, MIN(SomeParameter), MAX(SomeParameter) FROM ... WHERE SomeField = 'ABC' GROUP BY Age, Gender 因此,对于性
{
Age: 20,
Gender: "Male",
SomeField: "ABC"
SomeParameter: 17.7
}
使用C#mongodb驱动程序,您如何编写这样的代码
SELECT Age, Gender, MIN(SomeParameter), MAX(SomeParameter)
FROM ...
WHERE SomeField = 'ABC'
GROUP BY Age, Gender
因此,对于
性别
和年龄
的每个组合(组),我们将得到某些参数的最小值和最大值
,关键在于“\u id”
值结构:
IMongoCollection<BsonDocument> collection = GetYourCollectionHere();
// there are many ways to create a filter. Using Builders here.
var filter = Builders<BsonDocument>.Filter.Eq("SomeField", "ABC");
var groupby = new BsonDocument("_id", new BsonDocument {
{ "Gender", "$Gender" },
{ "Age", "$Age" }
})
.Add("Min", new BsonDocument("$min", "$SomeParameter"))
.Add("Max", new BsonDocument("$max", "$SomeParameter"));
var result = collection
.Aggregate()
.Match(filter)
.Group(groupby);
// to see the output
foreach (var doc in result)
{
Console.WriteLine(doc.ToJson());
}
IMongoCollection collection=GetYourCollectionHere();
//有许多方法可以创建过滤器。在这里使用构建器。
var filter=Builders.filter.Eq(“SomeField”、“ABC”);
var groupby=new BsonDocument(“\u id”,new BsonDocument){
{“性别”,“性别$”},
{“年龄”,“$Age”}
})
.Add(“Min”,新的BsonDocument(“$Min”,“$SomeParameter”))
.Add(“Max”,新的BsonDocument(“$Max”,“$SomeParameter”));
var结果=集合
.Aggregate()
.Match(过滤器)
.分组(分组比);
//查看输出
foreach(结果中的var单据)
{
Console.WriteLine(doc.ToJson());
}