MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

pesquisa de texto mongodb com vários campos


Você deve criar um índice de texto nos campos que deseja pesquisar:
db.deals.ensureIndex({ name: "text", description : "text", category : "text" });

Da documentação do operador $text:

$text realiza uma pesquisa de texto no conteúdo dos campos indexados com um índice de texto.

O índice que você criou para seus três campos é um índice composto, não um índice de texto. O índice de texto ficará assim:
{
    "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
}