Можете да добавите текстов индекс към вашата дефиниция на схемата Mongoose, който ви позволява да използвате $text
оператор във вашия find
заявки за търсене във всички полета, включени в текстовия индекс.
За да създадете индекс, който да поддържа текстово търсене, да речем, name
и profile.something
:
var schema = new Schema({
name: String,
email: String,
profile: {
something: String,
somethingElse: String
}
});
schema.index({name: 'text', 'profile.something': 'text'});
Или ако искате да включите всички низови полета в индекса, използвайте '$**'
заместващ знак:
schema.index({'$**': 'text'});
Това ще ви позволи да изпълните заявка за текстово търсене със страници като:
MyModel.find({$text: {$search: searchString}})
.skip(20)
.limit(10)
.exec(function(err, docs) { ... });
За повече подробности прочетете пълната документация за текстови индекси на MongoDB.