Coder
Coder

Reputation: 408

Convert date from iso date format to utc in mongodb query

i am new in mongodb driver.i am trying to filter documents between two date from 06-08-2015 to 06-08-2015 .this is my code

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

you can see my manuscriptFilterDocument.Filter.SubmissionFromDate.Date filed contain value "06-08-2015 00:00:00" .because in mongodb date is automatically converted to iso date formate.how can i convert this to UTC date formate for comparison.

enter image description here but after add this to query list date value is converted to isodate format enter image description here

Upvotes: 0

Views: 3003

Answers (3)

pieperu
pieperu

Reputation: 2762

You can achieve this with Lambda

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

Or to do the same things with the Builders

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

Upvotes: 1

Coder
Coder

Reputation: 408

finally i got it.i share my answer to others for reference.i changed my code like this

i use DateTime.SpecifyKind() function for convert datetime to UTC

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

Upvotes: 1

Inbar Barkai
Inbar Barkai

Reputation: 302

Try LINQ to 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

Edit

The following is an equalivant of your code:

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

Upvotes: 1

Related Questions