Możesz dodać indeks tekstowy do definicji schematu Mongoose, który pozwoli Ci użyć $text
operator w twoim find
zapytania do przeszukiwania wszystkich pól zawartych w indeksie tekstowym.
Aby utworzyć indeks obsługujący wyszukiwanie tekstowe, powiedzmy name
i profile.something
:
var schema = new Schema({
name: String,
email: String,
profile: {
something: String,
somethingElse: String
}
});
schema.index({name: 'text', 'profile.something': 'text'});
Lub jeśli chcesz uwzględnić wszystkie pola ciągów w indeksie, użyj '$**'
symbol wieloznaczny:
schema.index({'$**': 'text'});
Umożliwiłoby to wykonanie wyszukiwanego tekstu stronicowanego, takiego jak:
MyModel.find({$text: {$search: searchString}})
.skip(20)
.limit(10)
.exec(function(err, docs) { ... });
Aby uzyskać więcej informacji, przeczytaj pełną dokumentację indeksów tekstowych MongoDB.