![](/img/trans.png)
[英]MongoDB how to do multiple aggregations in one query with C# driver?
[英]Can't do multiple groups in MongoDB C# Driver
我试图显示每个使用Linq的MongoDB集合中每个制造商的统计数据,我希望将数据显示为:
[{
Manufacturer: '',
Statistics: [{
Month: '',
Counts: 0
}]
}]
所以我正在尝试以下linq查询:
var result = _statisticsRepository
.All()
.GroupBy(g => g.ManufacturerId)
.Select(s => new
{
Manufacturer = s.Key,
Statistics = s
.GroupBy(a => a.Values["DATA_MONTH"])
.Select(a => new
{
Month = a.Key,
Counts = a.Sum(d => d.Count)
})
});
当我尝试此代码时,出现此错误:
NotSupportedException: The method GroupBy is not supported in the expression tree: {document}.GroupBy(a => a.Values.get_Item("DATA_MONTH")).
我这样做是错误的方式还是C#驱动程序中的限制? 或者还有另一种方法吗?
您可以使用聚合框架而不是LINQ来获取所需的数据:
var group1 = new BsonDocument
{
{ "_id", new BsonDocument{{"ManufacturerId", "$ManufacturerId"},{"DATA_MONTH", "$DATA_MONTH"} }},
{ "Count", new BsonDocument
{
{
"$sum", $Count }
} }
};
var group2 = new BsonDocument
{
{ "_id", "$_id.ManufacturerId" },
{ "Statistics ", new BsonDocument { { "$addToSet",new BsonDocument{{"Month", "$_id.DATA_MONTH"},{"Count","$Count"} } } }},
};
var result = database.GetCollection<BsonDocument>("Manufacturers").Aggregate()
.Group(group1)
.Group(group2)
.ToList();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.