Reputation: 408
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.
but after add this to query list date value is converted to isodate format
Upvotes: 0
Views: 3003
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
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
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;
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