Ik zou aanraden een genormaliseerde versie van uw gegevens op te slaan en daarop te indexeren/zoeken. Het zal waarschijnlijk aanzienlijk sneller zijn dan het gebruik van regex. Natuurlijk, je verbruikt wat meer opslagruimte door "john" naast "John" op te nemen, maar je gegevenstoegang zal sneller zijn omdat je gewoon een standaard $eq-query zou kunnen gebruiken.
Als je aandringt op regex, raad ik aan om ^
. te gebruiken (begin van de regel) en $
(einde regel) rond uw zoekterm. Onthoud echter dat u aan uw zoekwaarde moet ontsnappen, zodat de inhoud niet als RegEx wordt behandeld.
Dit zou moeten werken:
string escapedFindValue = System.Text.RegularExpressions.Regex.Escape(findValue);
new BsonRegularExpression(string.Format("^{0}$", escapedFindValue), "i");
Of als u een nieuwere versie van het framework gebruikt, kunt u tekenreeksinterpolatie gebruiken:
string escapedFindValue = System.Text.RegularExpressions.Regex.Escape(findValue);
new BsonRegularExpression($"^{escapedFindValue}$", "i");