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

时间:2016-10-06 10:50:28

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

我是mongodb driver.i的新手我试图在2015年8月6日到2015年6月6日之间的两个日期之间过滤文件。这是我的代码

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 date formate.how我可以将此转换为UTC日期甲酸盐用于比较。

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

3 个答案:

答案 0 :(得分:1)

尝试使用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;

答案 1 :(得分:1)

最后我明白了。我分享了我的答案以供参考。我改变了我的代码

我使用DateTime.SpecifyKind()函数将datetime转换为UTC

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

答案 2 :(得分:1)

您可以使用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();