Вы можете связать SortBy
звонки:
var sort = SortBy.Ascending("surname").Descending("email");
foreach (var doc in contactsCollection.FindAs<MongoDB.Bson.BsonDocument>(query).SetSortOrder(sort))
{
...
Я бы с осторожностью относился к динамическому построению запросов, особенно с таким количеством ключей. Имейте в виду, что MongoDB использует только ОДИН индекс для запроса, поэтому ваш индекс должен соответствовать.
Пример: find({A: "foo", B: "bar"}).sort("C" : -1);
Индексирование не будет эффективно использоваться, если составной индекс равен {C, A, B}
. Это должно быть {A, B, C}
вместо этого. Слишком много индексов займет место и замедлит вставку / обновление.