繁体   English   中英

无法汇总所有Int32字段值

[英]Can't sum up all Int32 field values

我有一个mongo db集合,其中包含这样的文档 在此处输入图片说明

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

我遇到了这个线程C#Mongodb。 所有文档的Sum字段,并尝试将方法与Sum()一起使用,如下所示:

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

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

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

x => x[CounterpartyFields.DEBT].AsInt32

转换为:

{
    "$group" : {
        "_id" : 1,
        "__result" : {
            "$sum" : "$debt.AsInt32"
        }
    }
}

这不是您想要的。

要解决此问题,您应该摆脱AsInt32并使其可编译,可以使用以下代码:

.Sum(x => (int)x[CounterpartyFields.DEBT]);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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