sql >> Databasteknik >  >> NoSQL >> MongoDB

Fulltextsökning i MongoDB ger inte det förväntade resultatet för @@@

Textsökning är utformad för att indexera strängar baserat på språkheuristik . Textindexering innefattar två allmänna steg:tokenisering (konvertera en sträng till individuella termer av intresse) följt av stemming (konvertera varje term till en rotform för indexering baserat på språkspecifika regler).

Under tokeniseringssteget vissa tecken (till exempel skiljetecken som @ ) klassificeras som ordavgränsare (alias avgränsare ) istället för textinmatning och används för att separera den ursprungliga strängen i termer. Språkspecifika stoppord (vanliga ord som "den", "är" eller "på" på engelska) exkluderas också från ett textindex.

Sedan din sökfras @@@ består helt av avgränsare, det finns ingen motsvarande post i textindexet.

Om du vill matcha generiska strängmönster bör du använda reguljära uttryck a> snarare än textsökning. Till exempel:db.getCollection('TestCollection').find({field2:/@@@/}) . Observera dock varningarna för indexanvändning för reguljära uttryck.



  1. Ta bort arrayelement från ALLA dokument med MongoDB C#-drivrutinen

  2. Hur man filtrerar en samling baserat på varje matrisobjekt i ett dokumentfält i Mongodb

  3. MongoDB:Uppdatering av dokument med data från samma dokument

  4. Hur fångar man felet när man infogar ett MongoDB-dokument som bryter mot ett unikt index?