【问题标题】:MongoDB Driver Builders<dynamic> dont work on equal to dateMongoDB Driver Builders<dynamic> 不能在相同日期工作
【发布时间】:2021-12-27 04:57:18
【问题描述】:

当我尝试让 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);

没有任何结果。

我想知道我做错了什么。

【问题讨论】:

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


    【解决方案1】:

    作为提供的代码,日期比较 (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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-13
      • 2021-12-27
      • 1970-01-01
      • 2012-12-12
      相关资源
      最近更新 更多