В соответствии с документами драйвер Mongo содержит реализацию LINQ, предназначенную для структуры агрегации Mongo. Это означает, что запрос типа
var query = from p in collection.AsQueryable()
orderby p.Name, p.Age descending
select p;
//or
var query = collection.AsQueryable()
.OrderBy(p => p.Name)
.ThenByDescending(p => p.Age);
будет отображаться в следующий конвейер агрегации:
[
{ $sort: { Name: 1, Age: -1 } },
]
Конечно, вам не нужно использовать LINQ, вы также можете писать эквивалентные запросы без него,Но ответ таков: да, драйвер поддерживает преобразование ваших запросов во что-то, выполняемое на стороне БД.
Эта страница в документации относится, я полагаю, к конкретной ситуации, которую вы описываете:
db.records.createIndex( { a: 1 } )
будет поддерживать как обратный, так и обратный порядок следования:
db.records.find().sort( { a: 1 } )
db.records.find().sort( { a: -1 } )
В документах есть много информации об индексах, поэтому я рекомендую прочитать их, чтобы получитьощущение того, что лучше для вашего случая использования.