Me gusta ir a buscar un usuario en mongoDb buscando un usuario llamado valor. El problema con:
username: 'peter'
es que no lo encuentro si el nombre de usuario es "Peter", o "Peter" .. o algo así.
Entonces quiero hacer como sql
SELECT * FROM users WHERE username LIKE 'peter'
¿Espero que obtengan lo que estoy pidiendo?
Corto: 'campo LIKE value' en mongoose.js / mongodb
Peter
oPeTER
tampoco, ya queLIKE
no distingue entre mayúsculas y minúsculas.Respuestas:
Para aquellos que buscaban una solución aquí está:
fuente
".*"
como nombre de usuario.Tuve problemas con esto recientemente, uso este código y funciona bien para mí.
Uso directamente
/Peter/i
trabajo, pero uso'/'+data+'/i'
y no trabajo para mí.fuente
fuente
fuente
new RegExp(var, "i")
fuente
Deberías usar una expresión regular para eso.
Sin embargo, tenga cuidado de que esta consulta no utilice index.
fuente
doc mangosta para encontrar. mongodb doc para regex.
Tenga en cuenta que el primer argumento se pasa a
mongoose.findOne
la función:{ "name" : { $regex: /Ghost/, $options: 'i' } }
,"name"
es el campo del documento que está buscando,"Ghost"
es la expresión regular,"i"
es para buscar coincidencias sin insensibles. Espero que esto te ayudará.fuente
La siguiente consulta encontrará los documentos con la cadena requerida sin distinción y con ocurrencia global también
fuente
Esto es lo que estoy usando.
fuente
Aquí mi código con expressJS:
fuente
si quiero consultar todos los registros en alguna condición, puedo usar esto:
fuente
$regex
cuando podría haberlo consumido{ $exists: true }
.Simplemente complementando la respuesta de @PeterBechP.
No olvides escapar de los caracteres especiales. https://stackoverflow.com/a/6969486
fuente
Esta es mi solución para convertir cada valor en un req.body en un parámetro LIKE de mangosta :
fuente