MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Il modo migliore per eseguire una ricerca di testo completo in MongoDB e Mongoose

Puoi aggiungere un indice di testo alla definizione dello schema Mongoose che ti consente di utilizzare il $text operatore nel tuo find query per cercare tutti i campi inclusi nell'indice di testo.

Per creare un indice su cui supportare la ricerca di testo, ad esempio name e profile.something :

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

Oppure, se vuoi includere tutti i campi stringa nell'indice, usa il '$**' carattere jolly:

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

Ciò ti consentirebbe di eseguire una query di ricerca di testo paginata come:

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

Per maggiori dettagli, leggi la documentazione completa sugli indici di testo di MongoDB.