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;
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;