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

Como AND e NOT na pesquisa de $ text do MongoDB


Existem algumas opções que você pode usar com a pesquisa de texto para atender a essas necessidades. Considere os seguintes documentos:
{ "text" : "cake" }
{ "text" : "sale" }
{ "text" : "sale cake" }
{ "text" : "cake sale" }
{ "text" : "dress sale" }
{ "text" : "cake sale monday" }

A "lista" padrão de palavras é uma ou inclusão, mas se você não quiser um e inclusão você "cita" as palavras:
db.words.find( { "$text": { "$search": "\"cake\" \"sale\"" } },{_id: 0})
{ "text" : "cake sale" }
{ "text" : "sale cake" }
{ "text" : "cake sale monday" }

Se você deseja excluir uma palavra, então você prefixa com - :
db.words.find( { "$text": { "$search": "\"cake\" \"sale\" -monday" } },{_id: 0})
{ "text" : "cake sale" }
{ "text" : "sale cake" }

E se você quiser parte disso como uma frase exata então você "cita" a frase inteira:
db.words.find( { "$text": { "$search": "\"cake sale\" -monday" } },{_id: 0})
{ "text" : "cake sale" }

As palavras derivadas, no entanto, têm um problema, então:
db.words.find( { "$text": { "$search": "test -testing" } },{_id: 0})

Na verdade, não retornaria um resultado.

Consulte a documentação no $text operador para exemplos. Nem todos estão lá no momento, mas está melhorando.