MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Meilleur moyen d'effectuer une recherche en texte intégral dans MongoDB et Mongoose

Vous pouvez ajouter un index de texte à votre définition de schéma Mongoose qui vous permet d'utiliser le $text opérateur dans votre find requêtes pour rechercher tous les champs inclus dans l'index de texte.

Pour créer un index pour prendre en charge la recherche de texte sur, par exemple, name et profile.something :

var schema = new Schema({
  name: String,
  email: String,
  profile: {
    something: String,
    somethingElse: String
  }
});
schema.index({name: 'text', 'profile.something': 'text'});

Ou si vous souhaitez inclure tous les champs de chaîne dans l'index, utilisez le '$**' caractère générique :

schema.index({'$**': 'text'});

Cela vous permettrait d'effectuer une requête de recherche de texte paginé comme :

MyModel.find({$text: {$search: searchString}})
       .skip(20)
       .limit(10)
       .exec(function(err, docs) { ... });

Pour plus de détails, lisez la documentation complète sur les index de texte MongoDB.