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

时间:2017-09-19 07:50:29

标签: c# mongodb

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

_id: 1,
clientId: 1,
cash: 500

_id: 2,
clientId: 1,
cash: 100

_id: 3,
clientId: 2,
cash: 200

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

Group
  

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

PS。我不想使用_collection.Aggregate().Match(t=>t.ClientId == 1).Group(null, g => new { Total = g.Sum(o => o.Cash) }); BsonDocument关键字之类的东西。我希望以更多C#方式实现它。

1 个答案:

答案 0 :(得分:4)

这样可以吗?

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()