C# MongoDb 驱动程序将字符串转换为 DateTime 并用于 Filter Builder

C# MongoDb Driver Convert string to DateTime and for Filter Builder

 var builder = Builders<ModelClass>.Filter;
 var filter = builder.Where(x => x.Active);

if (fromDate.HasValue)
        {
            var date = fromDate.Value;
            var subfilter = builder.Where(x =>DateTime.Parse(x.EnrollmentDate) >= date);
            filter &= subfilter;
        }

注册日期保存为字符串 public string EnrollmentDate{ get;放; },我需要在设定的日期范围内过滤文档,但我该如何比较呢?我需要这样过滤,

我得到 System.InvalidOperationException:不支持解析 ({document}{EnrollmentDate})。 SubFilter 行出错

你想做的时候遇到问题DateTime.Parse()

你能 post 格式化你的字符串 EnrollmentDate 吗?还有你的变量 date ,它只是日期还是日期时间?

这个也许能帮到你here

另外,尝试使用

var subfilter = builder.Gte(x=>x.Y, Z) 

我认为您需要使用 MongoDB 查询来实现,如下所示:

{
  "$expr": {
    "$gte": [
      { "$toDate": "$EnrollmentDate" },
      date
    ]
  }
}

虽然我认为使用 MongoDB .Net Driver LINQ 语法无法实现,但您将查询转换为 BsonDocument:

var subfilter = new BsonDocument("$expr",
    new BsonDocument("$gte", 
        new BsonArray {
            new BsonDocument("$toDate", "$EnrollmentDate"),
            date
        }
    )
);

filter &= subfilter;