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

Comment AND et NOT dans MongoDB $ text search

Il existe quelques options que vous pouvez utiliser avec la recherche de texte pour répondre à ces besoins. Considérez les documents suivants :

{ "text" : "cake" }
{ "text" : "sale" }
{ "text" : "sale cake" }
{ "text" : "cake sale" }
{ "text" : "dress sale" }
{ "text" : "cake sale monday" }

La "liste" de mots par défaut est un ou l'inclusion, mais si vous ne voulez pas un et inclusion vous "citez" les mots :

db.words.find( { "$text": { "$search": "\"cake\" \"sale\"" } },{_id: 0})
{ "text" : "cake sale" }
{ "text" : "sale cake" }
{ "text" : "cake sale monday" }

Si vous souhaitez exclure un mot puis vous préfixez avec - :

db.words.find( { "$text": { "$search": "\"cake\" \"sale\" -monday" } },{_id: 0})
{ "text" : "cake sale" }
{ "text" : "sale cake" }

Et si vous vouliez en faire partie sous la forme d'une expression exacte puis vous "citez" la phrase entière :

db.words.find( { "$text": { "$search": "\"cake sale\" -monday" } },{_id: 0})
{ "text" : "cake sale" }

Les mots radicaux ont cependant un problème, donc :

db.words.find( { "$text": { "$search": "test -testing" } },{_id: 0})

Ne renverrait pas réellement de résultat.

Voir la documentation sur le $text opérateur pour des exemples. Tous ne sont pas là pour le moment, mais ça va mieux.