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

Sådan OG og IKKE i MongoDB $tekstsøgning

Der er et par muligheder, som du kan bruge med tekstsøgning for at passe til disse behov. Overvej følgende dokumenter:

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

Standard "liste" over ord er en eller inklusion, men hvis du ikke ønsker et og inklusion du "citerer" ordene:

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

Hvis du vil udelukke et ord, så præfikser du med - :

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

Og hvis du ville have en del af det som en præcis sætning så "citerer" du hele sætningen:

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

Det har dog et problem at stamme ord, så :

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

Ville faktisk ikke returnere et resultat.

Se dokumentationen på $text operatør for eksempler. Ikke alle er der i øjeblikket, men det bliver bedre.




  1. $lookup returnerer tom matrix

  2. mongoose save vs insert vs create

  3. Jest og Redis (enhed tester problem med databasecache)

  4. Pub/sub implementering i nodeJS