在 mongodb 查询中将日期从 iso 日期格式转换为 utc

Convert date from iso date format to utc in mongodb query

我是 mongodb 的新手 driver.i 我正在尝试过滤从 06-08-2015 到 06-08-2015 的两个日期之间的文档。这是我的代码

IMongoQuery querySubmissionDateFrom = Query<ReviewMDO>.GTE(m => m.SubmissionData.SubmissionDate,manuscriptFilterDocument.Filter.SubmissionFromDate.Date);
     queryFilter.Add(querySubmissionDateFrom);

你可以看到我的manuscriptFilterDocument.Filter.SubmissionFromDate.Date 归档包含值“06-08-2015 00:00:00”。因为在mongodb 日期自动转换为iso 日期formate.how 可以我将其转换为 UTC 日期格式以进行比较。

但将此添加到查询列表后,日期值将转换为 isodate 格式

尝试 LINQ 到 MongoDB:

var collection = database.GetCollection<TDocument>("collectionname");\
var query =
    from e in collection.AsQueryable<Employee>()
    where e.FirstName == "John"
    select e;

https://mongodb-documentation.readthedocs.io/en/latest/ecosystem/tutorial/use-linq-queries-with-csharp-driver.html

编辑

以下是您的代码的等价物:

var collection = database.GetCollection<ReviewMDO>("collectionname");
var query =
        from m in collection.AsQueryable<ReviewMDO>()
        where m.SubmissionData.SubmissionDate >= querySubmissionDateFrom
        select m;

最后我 it.i 与其他人分享我的答案 reference.i 像这样更改了我的代码

我使用 DateTime.SpecifyKind() 函数将日期时间转换为 UTC

IMongoQuery querySubmissionDateFrom = Query<ReviewMDO>.GTE(m => m.SubmissionData.SubmissionDate, DateTime.SpecifyKind(manuscriptFilterDocument.Filter.SubmissionFromDate.Date, DateTimeKind.Utc) );
            queryFilter.Add(querySubmissionDateFrom);

您可以使用 Lambda 实现此目的

var date = DateTime.Now;
var results = Collection.Find(x => x.SubmissionDate >= date).ToList();

或者与 Builders 做同样的事情

var filter= Builders<ReviewMDO>.Filter.Gte(x => x.SubmissionDate, date);
var results = Collection.Find(filter).ToList();