MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

La recherche en texte intégral dans MongoDB ne donne pas le résultat attendu pour @@@

La recherche de texte est conçue pour indexer les chaînes en fonction de l'heuristique du langage . L'indexation de texte implique deux étapes générales :tokénisation (conversion d'une chaîne en termes individuels d'intérêt) suivi de stemming (conversion de chaque terme en une forme racine pour une indexation basée sur des règles spécifiques à la langue).

Au cours de l'étape de tokenisation, certains caractères (par exemple, des symboles de ponctuation tels que @ ) sont classés comme séparateurs de mots (alias délimiteurs ) plutôt que la saisie de texte et utilisé pour séparer la chaîne d'origine en termes. mots vides spécifiques à la langue (des mots courants tels que "the", "is" ou "on" en anglais) sont également exclus d'un index de texte.

Depuis votre expression de recherche @@@ se compose entièrement de délimiteurs, il n'y a pas d'entrée correspondante dans l'index de texte.

Si vous souhaitez faire correspondre des modèles de chaînes génériques, vous devez utiliser expressions régulières plutôt que la recherche de texte. Par exemple :db.getCollection('TestCollection').find({field2:/@@@/}) . Cependant, veuillez noter les mises en garde sur l'utilisation de l'index pour les expressions régulières.