无法汇总所有Int32字段值

时间:2019-02-21 18:01:50

标签: c# mongodb mongodb-.net-driver

我有一个mongo db集合,其中包含诸如enter image description here

这样的文档

我需要做的是计算所有文档的“债务”字段的总和。但是我不知道该怎么做。 官方文档似乎太晦涩,根本无济于事,因为关于如何使用C#驱动程序3.6+完全没有信息

我遇到了这个线程C# Mongodb. Sum field for all documents 并尝试将这种方法与Sum()一起使用:

var result = m_Counterparties.AsQueryable()
                .Where(x => !x[CounterpartyFields.ID].Equals(ObjectId.Empty))
                .Sum(x => x[CounterpartyFields.DEBT].AsInt32);
             WriteLine(result);  

我总是得到0,但您可以看到它必须至少为100

1 个答案:

答案 0 :(得分:2)

所以这里的问题是MongoDB C#驱动程序需要将您的lambda表达式转换为聚合。您可以运行profiler来观察其如何翻译。因此,您的代码带有:

<div class="divider">
  <h2>Text</h2>
</div>

被翻译成:

x => x[CounterpartyFields.DEBT].AsInt32

这不是您想要的。

要解决此问题,您应该摆脱{ "$group" : { "_id" : 1, "__result" : { "$sum" : "$debt.AsInt32" } } } 并使其可编译,可以使用以下代码:

AsInt32