![](/img/trans.png)
[英]How to sum the value of a key across all documents in a MongoDB collection with C#
[英]C# Mongodb. Sum field for all documents
我需要计算集合中所有文档的总数。 例如,我有以下三个文档:
_id: 1,
clientId: 1,
cash: 500
_id: 2,
clientId: 1,
cash: 100
_id: 3,
clientId: 2,
cash: 200
因此,我想对特定clientId
cash
字段求和。 对于客户端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)
});
方法'Group'的重载没有2个参数
PS。 我不想使用BsonDocument
和$sum
关键字之类的东西。 我想用更多的C#方式制作它。
这个可以吗?
var Total = _collection.AsQueryable().Where(x => x.ClientId == 2).Sum(x => x.Cash);
编辑:这里的合计是过度杀伤力,但它可能会像这样:
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;
在Db中执行聚合,直到聚合到List()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.