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

recherche de texte mongodb avec plusieurs champs

Vous devez créer un index de texte sur les champs que vous souhaitez rechercher :

db.deals.ensureIndex({ name: "text", description : "text", category : "text" });

De la documentation de l'opérateur $text :

$text effectue une recherche textuelle sur le contenu des champs indexés avec un index texte.

L'index que vous avez créé pour vos trois champs est un index composé et non un index de texte. L'index de texte ressemblera à ceci :

{
    "v" : 1,
    "key" : {
        "_fts" : "text",
        "_ftsx" : 1
    },
    "name" : "name_text_description_text_category_text",
    "ns" : "test.deals",
    "weights" : {
        "category" : 1,
        "description" : 1,
        "name" : 1
    },
    "default_language" : "english",
    "language_override" : "language",
    "textIndexVersion" : 2
}