带有DateTime.date的C#MongoDb项目

时间:2016-07-07 07:20:18

标签: c# mongodb datetime mongodb-aggregation

假设:

我有一些包含一些数据的mongodb集合。一个字段是DateTime字段。

现在我想汇总每一天的数据。

为此我创建了这个聚合

var result = collection
                .Aggregate()
                .Project(i => new {i.Key,date = i.Timestamp.Date})
                .Group(k => k.date,l => new { l.Key,count =l.Count()})
                .ToList();

问题:

现在Mongo数据库告诉我不支持i.TimeStamp.Date。我认为它只是无法将其转换为“ToDate”功能。

按日期对这些数据进行分组的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

我正在检查cshardriver项目并且没有像这样的扩展, 这意味着我们需要使用bson文档来实现这一点。

var project =  BsonDocument.Parse("{Key:1, Timestamp:1,year:{$year:'$Timestamp'}, dayOfYear:{$dayOfYear:'$Timestamp'}}");

var group = BsonDocument.Parse("{_id:{year:'$year', dayOfYear:'$dayOfYear'}, count:{$sum:1}}");

var result = collection
                .Aggregate()
                .Project(project)
                .Group(group)
                .ToList();

我们可以输入对象Project<ournewClassrepresentingProjectShape>(project)然后我们可以使用输入组。

欢迎任何评论!