Вот как я в настоящее время сделать отчетливый с каркасом агрегации MongoDB:агрегации MongoDB больше, чем отличается
db.big.aggregate([ { "$project" : { "first_name" : "$first_name"}} , { "$group" : { "_id" : { "col1" : "$first_name"}}} , { "$limit" : 50000}])
И это занимает около 3 секунд на коллекции, которая имеет немного больше, чем 2M документов. Если я запускаю следующий запрос
db.big.distinct('first_name')
Я получаю довольно много же результат, но менее чем за 1 секунду. Проблема, с которой я сталкиваюсь, заключается в том, что я не могу ее ограничить, поэтому, если коллекция имеет 1M различных значений для атрибута, все будет возвращено. Есть ли способ использовать различный, поскольку он более совершенен, но также имеет ограничение на количество возвращаемых элементов. Я использую java-драйвер MongoDB, поэтому мне нужно решение, которое с ним работает.
db.big.distinct ('first_name'). Limit (x)? – profesor79
У вас есть указатель на "first_name"? Если это так, [отдельная операция будет использовать его и даже будет закрыта] (https://docs.mongodb.com/manual/reference/command/distinct/#index-use). С другой стороны, [структура агрегации не использует его для группировки] (https://docs.mongodb.com/master/core/aggregation-pipeline/#pipeline-operators-and-indexes). – joao
@ profesor79 ограничение не существует. Различный возвращает массив. – TrexXx