无法总结所有Int32字段值

问题描述 投票:1回答:1

我有一个mongodb集合,其中包含像qazxsw poi这样的文档

我只需要计算所有文件的“债务”字段的总和。但我不知道如何制作它。官方文档似乎太模糊,根本没有帮助,因为绝对没有关于如何使用C#驱动程序3.6+的信息

我遇到了这个线程enter image description here并尝试使用C# Mongodb. Sum field for all documents的方法,如下所示:

Sum()

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

c# mongodb mongodb-.net-driver
1个回答
2
投票

所以问题在于MongoDB C#驱动程序需要将lambda表达式转换为聚合。您可以运行var result = m_Counterparties.AsQueryable() .Where(x => !x[CounterpartyFields.ID].Equals(ObjectId.Empty)) .Sum(x => x[CounterpartyFields.DEBT].AsInt32); WriteLine(result); 来观察它是如何被翻译的。所以你的代码用:

profiler

被翻译成:

x => x[CounterpartyFields.DEBT].AsInt32

这不是你想要的。

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

AsInt32
© www.soinside.com 2019 - 2024. All rights reserved.