C#Mongodb。所有文件的总和字段

use*_*173 2 c# mongodb

我需要计算集合中所有文档的总数。例如,我有以下三个文档:

_id: 1,
clientId: 1,
cash: 500

_id: 2,
clientId: 1,
cash: 100

_id: 3,
clientId: 2,
cash: 200
Run Code Online (Sandbox Code Playgroud)

因此,我想对cash特定字段求和clientId。对于客户1我想要获得600,对于客户2我想要获得200。这是我在MongoDB中首次使用聚合框架。我检查了文档以及SO的其他问题,但无法弄清楚为什么必须使用group子句。如果只想总结一下,为什么我需要它。我事件尝试使用Group但无法编译:

_collection.Aggregate().Match(t=>t.ClientId == 1).Group(null, g => new
            {
                Total = g.Sum(o => o.Cash)
            });
Run Code Online (Sandbox Code Playgroud)

方法'Group'的重载没有2个参数

PS。我不想使用BsonDocument诸如$sum关键字之类的东西。我想用更多的C#方式制作它。

BOR*_*OR4 5

这个可以吗?

var Total = _collection.AsQueryable().Where(x => x.ClientId == 2).Sum(x => x.Cash);
Run Code Online (Sandbox Code Playgroud)

编辑:这里的合计过大了,但它可能会像这样:

var x = MongoCollection.Aggregate()
                    .Group(
                            doc => doc.clientId,
                            group => new
                            {
                                clientId = group.Key,
                                Total = group.Sum(y => y.sum)
                            }
                    ).ToList().FirstOrDefault(c => c.clientId == 2).Total;
Run Code Online (Sandbox Code Playgroud)

在Db中执行聚合,直到聚合到List()