【发布时间】:2019-09-20 21:17:43
【问题描述】:
我正在尝试按集合中的多个属性对文档进行类型安全分组。我发现问题不在于多个属性本身的分组,而是关键是一个对象(new { })而不是字符串。
这行得通:
collection.Aggregate().Group(x => x.Name, x => new { Name = x.Key, Count = x.Sum(s => 1) }).ToList();
这不起作用:
collection.Aggregate().Group(x => new { Name = x.Name }, x => new { Name = x.Key.Name, Count = x.Sum(s => 1) }).ToList();
错误是:
MongoDB.Driver.MongoCommandException:'命令聚合失败:字段'名称'必须是累加器对象。'
当我将不起作用的查询转换为字符串时,我得到以下信息:
aggregate([{ "$group" : { "_id" : { "Name" : "$Name" }, "Name" : "$_id.Name", "Count" : { "$sum" : 1 } } }])
我想这里的问题是这部分"Name" : "$_id.Name"。我该如何解决这个问题?
我目前正在使用 2.8.0 版本的 mongodb 驱动程序。
【问题讨论】:
标签: c# mongodb .net-core aggregation-framework mongodb-.net-driver