MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

mongodb ricerca di testo con più campi

Dovresti creare un indice di testo sui campi in cui vuoi cercare:

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

Dalla documentazione dell'operatore $text:

$text esegue una ricerca testuale sul contenuto dei campi indicizzati con un indice testuale.

L'indice che hai creato per i tuoi tre campi è un indice composto, non un indice di testo. L'indice di testo sarà simile a questo:

{
    "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
}