MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Melhor maneira de realizar uma pesquisa de texto completo no MongoDB e no Mongoose


Você pode adicionar um índice de texto à sua definição de esquema Mongoose que permite usar o $text operador em seu find consultas para pesquisar todos os campos incluídos no índice de texto.

Para criar um índice para dar suporte à pesquisa de texto em, digamos, name e profile.something :
var schema = new Schema({
  name: String,
  email: String,
  profile: {
    something: String,
    somethingElse: String
  }
});
schema.index({name: 'text', 'profile.something': 'text'});

Ou se você quiser incluir todos os campos de string no índice, use o '$**' curinga:
schema.index({'$**': 'text'});

Isso permitiria que você realizasse uma consulta de pesquisa de texto paginada como:
MyModel.find({$text: {$search: searchString}})
       .skip(20)
       .limit(10)
       .exec(function(err, docs) { ... });

Para obter mais detalhes, leia a documentação completa dos índices de texto do MongoDB.