Conforme sugerido por @Thilo, você pode usar várias ideias, incluindo prefixação.
O mais importante é ter uma solicitação bem rápida (porque você quer que o autocomplete sinta instantânea). Então você tem que usar a consulta que usará os índices corretamente.
Com regexp:use
/^prefix/
(o importante é o ^ para especificar o início de linha que é obrigatório para fazer a consulta usar índice). A consulta de intervalo também é boa:
{ $gt : 'jhc', $lt: 'jhd' } }
Mais complicado, mas mais rápido:você pode armazenar prefix-trees no mongo (também conhecido como tentativas) com entradas como:
{usrPrefix : "anna", compl : ["annaconda", "annabelle", "annather"]}
{usrPrefix : "ann", compl : ["anne", "annaconda", "annabelle", "annather"]}
Esta última solução é muito rápida (se os índices estiverem em compl, é claro), mas não é eficiente em termos de espaço. Você sabe o trade-off que você também tem que escolher.