in SQL world I could do something to the effect of:
SELECT name FROM table WHERE UPPER(name) = UPPER('Smith');
and this would match a search for “Smith”, “SMITH”, “SmiTH”, etc… because it forces the query and the value to be the same case.
However, MongoDB doesn’t seem to have this capability without using a RegEx, which won’t use indexes and would be slow for a large amount of data.
Is there a way to convert a stored value to a particular case before doing a search against it in MongoDB?
I’ve come across the $toUpper aggregate, but I can’t figure out how that would be used in this particular case.
If there’s not way to convert stored values before searching, is it possible to have MongoDB convert a value when it’s created in Mongo? So when I add a document to the collection it would force the “name” attribute to a particular case? Something like a callback in the Rails world.
It looks like there’s the ability to create stored JS for MongoDB as well, similar to a Stored Procedure. Would that be a feasible solution as well?
Mostly looking for a push in the right direction; I can figure out the particular code once I know what I’m looking for, but so far I’m not even sure if my desired functionality is doable.
You have to normalize your data before storing them. There is no support for performing normalization as part of a query at runtime.