作为提供的代码,日期比较 (Eq) 将包含在 Time 中。
AFAIK,我认为仅在 MongoDB 中直接比较日期是不可行的,除非特定日期字段没有时间值(例如:2021-11-08T00:00:00.000+00:00)。
解决方案1:比较范围内的日期
由于您想在一天内查询文档(system_create_date),因此:
开始日期:2021-11-08(大于等于)
结束日期:2021-11-09(小于)
FilterDefinition<dynamic> searchFilter = FilterDefinition<dynamic>.Empty;
string x = "system_create_date";
string y = "2021-11-08";
string z = "2021-11-09";
var startDate = DateTime.Parse(y, CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal);
var endDate = DateTime.Parse(z, CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal);
searchFilter &= Builders<dynamic>.Filter.Gte(x, startDate);
searchFilter &= Builders<dynamic>.Filter.Lt(x, endDate);
解决方案 2:使用BsonDocument
使用BsonDocument,您只能通过将system_create_date 转换为日期字符串来比较日期。
BsonDocument filterDoc = new BsonDocument("$expr",
new BsonDocument("$eq",
new BsonArray
{
new BsonDocument("$dateToString",
new BsonDocument
{
{ "format", "%Y-%m-%d" },
{ "date", "$system_create_date" }
}),
"2021-11-08"
}
)
);
FilterDefinition<dynamic> searchFilter = FilterDefinition<dynamic>.Empty;
searchFilter &= filterDoc;