Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb C#-如何按多个字段分组(聚合)_C#_Mongodb_Aggregation Framework_Mongodb .net Driver - Fatal编程技术网

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());
}