Отличительные с помощью Limit and Skip - PullRequest
0 голосов
/ 10 июля 2020

У меня есть коллекция, содержащая 20 миллионов записей. Нужно найти отличное от одного поля. Что может иметь отличное значение 10K. Я хочу применить к сортировке, ограничению и пропуску, чтобы получить 1000 различных значений в одном запросе.

Я пробовал использовать агрегированный запрос для поиска отдельных значений с ограничением, но он работает очень медленно. По сравнению с тем, если я использую отдельную функцию, это относительно быстро, но я не могу применить ограничение к результату.

Это постоянно растущая коллекция.

1 Ответ

0 голосов
/ 10 июля 2020

Вы не можете выполнить $sort или $limit с помощью команды distinct.

Лучше всего использовать агрегацию MongoDB вместе с индексированием.

Команда индекса:

db.<Collection-Name>.createIndex({"<Key-Name>": 1}, {background: true})

Запрос на агрегирование:

db.<Collection-Name>.aggregate([
    {
        '$group': {
            '_id': '$<Key-Name>'
        }
    },
    {
        '$sort': {
            '_id': 1  // Sort in Ascending order, `-1` for descending order 
        }
    },
    {
        '$limit': 1000
    }
])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...