C# MongoDB(v3.2.4)Fluent-聚合组总和始终为0

C# MongoDB(v3.2.4)Fluent-聚合组总和始终为0,c#,mongodb,fluent,C#,Mongodb,Fluent,我试图过滤集合中数百万个文档,然后对其中一个属性应用分组。我需要知道财产总额。我已经编写了以下代码,但是总和似乎始终为0,即使集合中的每个文档中都存在金额 var results = collection.Aggregate().Match(expression) .Project(data => new { Id = data.Id, Name = data.Name,

我试图过滤集合中数百万个文档,然后对其中一个属性应用分组。我需要知道财产总额。我已经编写了以下代码,但是总和似乎始终为0,即使集合中的每个文档中都存在金额

var results = collection.Aggregate().Match(expression)
            .Project(data => new
            {
                Id = data.Id,
                Name = data.Name,
                Amount = data.NetAmount
            })
            .Group(
                key => new { key.Id, key.Name },
                grouping => new
                {
                    IdAndName = grouping.Key,
                    GroupTotalAmount = grouping.Sum(obj => obj.Amount)
                })
            .Project(arg => new
            {
                Id = arg.IdAndName.Id,
                Name = arg.IdAndName.Name,
                Amount = arg.GroupTotalAmount
            });
如果我使用
1
而不是
obj.Amount
,在上面的代码片段中,我将获得分组集合的计数

var results = collection.Aggregate().Match(expression)
            .Project(data => new
            {
                Id = data.Id,
                Name = data.Name,
                Amount = data.NetAmount
            })
            .Group(
                key => new { key.Id, key.Name },
                grouping => new
                {
                    IdAndName = grouping.Key,
                    GroupTotalAmount = grouping.Sum(obj => obj.Amount)
                })
            .Project(arg => new
            {
                Id = arg.IdAndName.Id,
                Name = arg.IdAndName.Name,
                Amount = arg.GroupTotalAmount
            });
此外,如果我只是在管道中没有组的情况下进行项目,我可以看到为每个文档填充的
Amount

这是我在上述代码中的
表达式

Expression<Func<MyObject, bool>> expression = data => data.PropertyA == 55 && data.PropertyB == 2000;
Expression=data=>data.PropertyA==55&&data.PropertyB==2000;

任何帮助都将不胜感激。谢谢。

请用一些示例文档和最小可验证代码更新帖子。很可能您的“金额”数据实际上是一个“字符串”,因此无法“数字”求和。您需要更改数据,以便“应该”是数字的东西实际上是。@NeilLunn-金额是十进制类型的,文档中的净金额也是十进制的。我看到它时会相信的。由于
$sum
而产生的
0
通常是数据集中某个位置非数字数据的指示器。“告诉”我们这就是你所拥有的一切是很好的,但是在你展示给我们之前解决你的问题是没有用的。您的问题是根据要求包括存储的文档详细信息,并检查您的集合,以查看
NetAmount
属性中的所有数据实际上都是数字。包括您的MongoDB服务器版本,因为这也是相关的。@NeilLunn我实际上发现了,您是对的,类型导致了问题。我在C#端使用了decimal类型,但文档将其存储为字符串。我目前正在使用JavaScript shell命令更新文档中金额的类型。想知道为什么MongoDB不支持十进制C#类型。