У меня есть следующий кодоблок:C# MongoDB 2.0 Поиск и проект заказал часть массива
var r = this.collections.competitions.Find(filter)
.Project(x => x.TeamRanks)
.Project(t => t.Logo)
.Sort(sort)
.Skip(prev)
.Limit(count)
.Single();
У меня есть эта Competition
коллекции, которые имеют 3 поля
Class Competition {
public ObjectId _Id;
public string Logo;
public List<string> TeamRanks
}
Фильтр здесь находится на Competition._Id
, Я хочу получить логотип и первые 5 ранжированных команд в порядке возрастания рангов. (Который задается значением count
) Список может быть огромным, поэтому я хочу использовать Project здесь (или альтернативное решение с Fields), но он, похоже, не работает. вопросы:
1. r
имеет тип string
который является вторым Project
и игнорируя TeamRanks.
2. Как я могу получить только 5 лучших команд в порядке возрастания?
TIA.
EDIT
Я только сейчас заметил, что весь род, пропустить и ограничения сделаны на конкурсе, я хочу, чтобы применить на TeamRanks конечно. Так что если, например, метод получает счетчик = 7, а некоторые competitionId, метод должен вернуть конкуренцию с предоставленным идентификатору и внутри него верхние 7 команд заказали ..
Это неправильно. Я получаю весь документ здесь, его то, что я хочу предотвратить –
, вы можете сортировать документы на корневом уровне, но сортировка элементов массива, когда вы выполняете поиск(), является сложной частью. Возможно, вам понадобится сделать агрегацию – IsaacBok
Я не возражаю, сортируя ее при вводе. Просто нужен метод для получения первых пяти –