Du kan tilføje et tekstindeks til din Mongoose-skemadefinition, der lader dig bruge $text
operator i din find
forespørgsler for at søge i alle felter inkluderet i tekstindekset.
For at oprette et indeks, der understøtter tekstsøgning på, f.eks. name
og profile.something
:
var schema = new Schema({
name: String,
email: String,
profile: {
something: String,
somethingElse: String
}
});
schema.index({name: 'text', 'profile.something': 'text'});
Eller hvis du vil inkludere alle strengfelter i indekset, skal du bruge '$**'
jokertegn:
schema.index({'$**': 'text'});
Dette ville gøre dig i stand til at udføre en søgeforespørgsel med sideordnet tekst som:
MyModel.find({$text: {$search: searchString}})
.skip(20)
.limit(10)
.exec(function(err, docs) { ... });
For flere detaljer, læs den fulde MongoDB Text Indexes-dokumentation.