MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Beste Möglichkeit, eine Volltextsuche in MongoDB und Mongoose durchzuführen

Sie können Ihrer Mongoose-Schemadefinition einen Textindex hinzufügen, mit dem Sie $text verwenden können Operator in Ihrem find Abfragen, um alle im Textindex enthaltenen Felder zu durchsuchen.

So erstellen Sie einen Index zur Unterstützung der Textsuche nach beispielsweise name und profile.something :

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

Oder wenn Sie alle Zeichenfolgenfelder in den Index aufnehmen möchten, verwenden Sie den '$**' Platzhalter:

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

Dies würde es Ihnen ermöglichen, eine ausgelagerte Textsuchabfrage durchzuführen wie:

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

Weitere Einzelheiten finden Sie in der vollständigen Dokumentation zu MongoDB-Textindizes.