sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Cómo realizo consultas que no distinguen entre mayúsculas y minúsculas en Mongodb?

La solución de Chris Fulstow funcionará (+1), sin embargo, puede que no sea eficiente, especialmente si su colección es muy grande. Expresiones regulares no rooteadas (aquellas que no comienzan con ^ , que ancla la expresión regular al comienzo de la cadena), y aquellos que usan i la marca de insensibilidad a mayúsculas y minúsculas no usará índices, incluso si existen.

Una opción alternativa que podría considerar es desnormalizar sus datos para almacenar una versión en minúsculas del name campo, por ejemplo como name_lower . Luego puede consultar eso de manera eficiente (especialmente si está indexado) para coincidencias exactas que no distinguen entre mayúsculas y minúsculas como:

db.collection.find({"name_lower": thename.toLowerCase()})

O con una coincidencia de prefijo (una expresión regular arraigada) como:

db.collection.find( {"name_lower":
    { $regex: new RegExp("^" + thename.toLowerCase(), "i") } }
);

Ambas consultas usarán un índice en name_lower .