PyMongo usa espressioni regolari python native, allo stesso modo in cui la mongo shell usa espressioni regolari javascript native. Per scrivere la query equivalente a ciò che avevi scritto nella shell sopra, dovresti usare:
db.stuff.find_one({'name': re.compile(username, re.IGNORECASE)})
Nota che questo eviterà di usare qualsiasi indice che potrebbe esistere sul name
campo, però. Un modello comune per la ricerca o l'ordinamento senza distinzione tra maiuscole e minuscole consiste nell'avere un secondo campo nel documento, ad esempio name_lower
, che viene sempre impostato ogni volta che name
modifiche (a una versione minuscola di name
, in questo caso). Dovresti quindi eseguire una query per un documento come:
db.stuff.find_one({'name_lower': username.lower()})