使用 DateTime.date 的 C# MongoDb 项目

标签 c# mongodb datetime mongodb-aggregation

给定:

我有一个包含一些数据的 mongodb 集合。其中一个字段是日期时间字段。

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

为此我创建了这个聚合

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 db 告诉 mit 不支持 i.TimeStamp.Date。我认为它只是无法将其转换为“ToDate”函数。

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

最佳答案

我正在检查 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();

我们可以输入 object Project<ournewClassrepresentingProjectShape>(project)然后我们可以使用类型化组。

欢迎任何意见!

关于使用 DateTime.date 的 C# MongoDb 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38239659/

相关文章:

c# - 我如何在没有打开图像 ui 的情况下在 C# 中的 Web 浏览器控件中插入图像?

c# - 检查可为空的 bool 是否为空

node.js - 如何查询 mongoDB 以获取其 _id 值与数组中的一个 _id 值匹配的文档?

angularjs - 如果任何集合包含超过 100 个文档,MEAN stack 应用程序将停止工作

MySQL 日期时间 : insert a date with timezone offset

javascript - 渲染部分 View 后阻止主视图渲染

c# - 具有Simple.OData.Client的DTO

javascript - 客户端如何从mongodb获取数据?

c# - 2 DateTime c#的时间比较

MYSQL 选取每个日期的最晚时间