Допустим, у меня есть документы из трех человек в MongoDB, вставленные в случайном порядке.
{
"firstName": "Hulda",
"lastName": "Lamb",
},
{
"firstName": "Austin",
"lastName": "Todd",
},
{
"firstName": "John",
"lastName": "Doe",
}
Моя цель - получить, скажем, следующего человека после Остина, когда список в алфавитном порядке , Поэтому я хотел бы получить человека с firstName = Hulda. Можно предположить, что я знаю Остина _id
. Моей первой попыткой было положиться на тот факт, что _id
является инкрементным, но это не сработает, потому что людей можно добавлять в базу данных в любом порядке. Поле _id
Хульды имеет значение меньше, чем у Остина. Я не могу сделать что-то вроде {_id: {$gt: <Austin's _id here>}};
И мне также нужно ограничить количество возвращаемых элементов, так что N - это динамическое c значение.
Вот код, который у меня есть сейчас, но, как я уже говорил, Идентификационный трюк не работает.
let cursor: any = this.db.collection(collectionName).find({_id: {$gt:
cursor = cursor.sort({firstName: 1});
cursor = cursor.limit(limit);
return cursor.toArray();
Некоторые пояснения:
startId
является действующим, существующим _id объекта limit
является переменная, содержащая положительное целочисленное значение - , сортировка и ограничение работают как положено, просто выбор следующих элементов неверен, поэтому
{_id: {$gt: startId}};
портит выбор.