En mi colección de base de datos tengo dos Objetos.
[ {"_id" : 1, name: "notLowercased"}, {"_id" : 2, name: "lowercased"}, ]Estoy usando find y $regex para encontrar un nombre que incluya alguna cadena.
data = await CatalogModel.find({name: {$regex : searcher.toString().toLowerCase()}})Por ejemplo, mi cadena de entrada está "en minúsculas".
Como resultado, obtengo una matriz
[ {"_id" : 2, name: "lowercased"}, ]Pero quiero obtener este resultado:
[ {"_id" : 1, name: "notLowercased"}, {"_id" : 2, name: "lowercased"}, ]Entiendo que está sucediendo porque el nombre "notLowercased" no está en minúsculas.
¿Cómo poner en minúsculas los campos de nombre en esta solicitud?
Puede agregar un parámetro $options como este: $options: "i" .
Como se explica enlos documentos :
i: Insensibilidad a mayúsculas y minúsculas para hacer coincidir mayúsculas y minúsculas. Para ver un ejemplo, consulte Realizar una coincidencia de expresión regular que no distingue entre mayúsculas y minúsculas.
Incluso puedes evitar toLowerCase()
data = await CatalogModel.find({name: {$regex : searcher.toString(), "$options": "i" }})