如何使用C#驱动程序聚合时间片并计算MongoDB中经过的总时间

时间:2016-03-31 11:19:42

标签: c# mongodb aggregation-framework mongodb-.net-driver

我有像这样的MongoDB对象集合。

{
    "_id" : "56fd034268f44e1eccb8a775",
    "Period" : {
            "StartDateTime" : ISODate("2016-04-02T06:00:00Z"),
            "EndDateTime" : ISODate("2016-04-02T08:00:00Z")
    },
    ... //other attributes here
}
{
    "_id" : "56fd034968f44e1eccb8a776",
    "Period" : {
            "StartDateTime" : ISODate("2016-04-04T06:00:00Z"),
            "EndDateTime" : ISODate("2016-04-04T07:30:00Z")
    },
    ... //other attributes here
}

我想创建一个强类型聚合查询来计算所有时间片的总耗用时间。

我写了这句话。

var aggregate = coll.Aggregate()
            .Project(r => new { duration = r.Period.EndDateTime - r.Period.StartDateTime })
            .Group(k => 0, g => g.Sum(x => x.duration));

但是我收到以下错误。

  

无法将类型'System.TimeSpan'隐式转换为'int'

有解决方案吗? 我是否要切换到BsonDocument方法?

0 个答案:

没有答案