Jeg vil anbefale at gemme en normaliseret version af dine data og indeksere/søge efter det. Det vil sandsynligvis være betydeligt hurtigere end at bruge regex. Selvfølgelig vil du spise lidt mere lagerplads ved at inkludere "john" sammen med "John", men din dataadgang vil være hurtigere, da du bare ville være i stand til at bruge en standard $eq-forespørgsel.
Hvis du insisterer på regex, anbefaler jeg at bruge ^
(start af linje) og $
(slut på linjen) omkring dit søgeord. Husk dog, at du bør undslippe din fundværdi, så dens indhold ikke behandles som RegEx.
Dette burde virke:
string escapedFindValue = System.Text.RegularExpressions.Regex.Escape(findValue);
new BsonRegularExpression(string.Format("^{0}$", escapedFindValue), "i");
Eller hvis du bruger en nyere rammeversion, kan du bruge strenginterpolation:
string escapedFindValue = System.Text.RegularExpressions.Regex.Escape(findValue);
new BsonRegularExpression($"^{escapedFindValue}$", "i");