Du kan lägga till ett textindex till din Mongoose-schemadefinition som låter dig använda $text
operatorn i din find
frågor för att söka i alla fält som ingår i textindexet.
För att skapa ett index som stödjer textsökning på, säg name
och profile.something
:
var schema = new Schema({
name: String,
email: String,
profile: {
something: String,
somethingElse: String
}
});
schema.index({name: 'text', 'profile.something': 'text'});
Eller om du vill inkludera alla strängfält i indexet, använd '$**'
jokertecken:
schema.index({'$**': 'text'});
Detta skulle göra det möjligt för dig att utföra en sökfråga med sökt text som:
MyModel.find({$text: {$search: searchString}})
.skip(20)
.limit(10)
.exec(function(err, docs) { ... });
För mer information, läs hela MongoDB Text Indexes dokumentation.