如何使用mongodb c#驱动程序按存储为字符串的TimeSpan字段进行过滤?

时间:2018-10-11 12:37:36

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

我有一个mongodb集合,其中的字段以字符串格式存储时间。在我的C#代码中,模型具有类型为TimeStamp的属性:

public TimeSpan StartTime { get; set; }

我需要一个查询来获取StartTime大于UtcNow的所有文档。像这样:

var now = new TimeSpan(DateTime.UtcNow.Hour, DateTime.UtcNow.Minute, DateTime.UtcNow.Second);
...
...
var docs = db.GetCollection<DocDataModel>("docs")
             .AsQueryable()
             .Where(e => e.StartTime > now)

但是我收到一条InvalidOperationException消息:不支持Where(({{document} {StartTime}> 12:04:52)))。

有什么办法可以正确地编写此查询?

1 个答案:

答案 0 :(得分:0)

使用StartTimenowlong变量转换为TimeSpan.Ticks

var now = new TimeSpan(DateTime.UtcNow.Hour, DateTime.UtcNow.Minute, DateTime.UtcNow.Second).Ticks;
...
...
var docs = db.GetCollection<DocDataModel>("docs")
             .AsQueryable()
             .Where(e => e.StartTime.Ticks > now)