Я создаю запрос на выборку для передачи в MongoDB с помощью выражений Linq.
Я хочу запросить в коллекции документы с DateTimePosed
<указанной датой. (Переменная <code>repository представляет собой IQueryable
, полученную из IMongoCollection.AsQueryable()
):
var parameter = Expression.Parameter(typeof(T), "x");
var finalExpression = Expression.Lambda<Func<T, bool>>(Expression.Constant(true), parameter);
finalExpression.Apply(Expression.LessThan(SomeBusinessObject.DateTimePosted, new DateTime(1988, 2, 1)));
var query = repository.Query;
var results = query.Select(o => o.OfferId.Value).ToList();
Когда я запускаю код, результаты пусты. При отладке я вижу, что сгенерированный запрос выглядит следующим образом:
aggregate([{
"$match" : { "DateTimePosted" : { "$lt" : "1988-02-01T00:00:00-06:00" } }
}])
Когда я запускаю его в клиенте mon go, он возвращает 0:
db.getCollection('somecollection').aggregate([{
"$match" : { "DateTimePosted" : { "$lt" : "1988-02-01T00:00:00-06:00" } }
}]);
Но если я изменяю запрос выглядит так:
db.getCollection('somecollection').aggregate([{
"$match" : { "DateTimePosted" : { "$lt" : ISODate("1988-02-01T00:00:00-06:00") } }
}]);
возвращает результаты.
Подскажите, пожалуйста, что я делаю не так?