繁体   English   中英

无法在MongoDB C#驱动程序中进行多个组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM