當我嘗試讓 Date 等于時,我無法得到我想要的結果。
FilterDefinition<dynamic> searchFilter = FilterDefinition<dynamic>.Empty;
string x = "system_create_date";
string y = "2021-11-08";
var SearchDAte = DateTime.Parse(y, CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal);
searchFilter &= Builders<dynamic>.Filter.Eq(x, SearchDAte);
結果沒有任何回報。
我想知道我做錯了什么。
uj5u.com熱心網友回復:
作為提供的代碼,日期比較 ( Eq) 將包含在Time 中。
AFAIK,我認為僅在 MongoDB 中直接比較 Date 是不可行的,除非特定日期欄位沒有時間值(例如: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;
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/357776.html
標籤:C# MongoDB mongodb-.net-驱动程序
上一篇:如何從后端到前端訪問回應狀態代碼
