Eu gosto de encontrar um usuário no mongoDb procurando por um usuário chamado valor. O problema com:
username: 'peter'
é que não encontro se o nome de usuário for "Peter" ou "PeTER" .. ou algo parecido.
Então eu quero fazer como sql
SELECT * FROM users WHERE username LIKE 'peter'
Espero que vocês entendam o que estou pedindo?
Resumindo: 'campo LIKE valor' em mongoose.js / mongodb
Peter
ouPeTER
porqueLIKE
não faz distinção entre maiúsculas e minúsculas.Respostas:
Para quem estava procurando uma solução aqui está:
fonte
".*"
como nome de usuário.Tive problemas com isso recentemente, uso esse código e funciona bem para mim.
Uso direto
/Peter/i
trabalho, mas uso'/'+data+'/i'
e não trabalho para mim.fonte
fonte
fonte
new RegExp(var, "i")
fonte
Você deve usar um regex para isso.
Porém, tenha cuidado, pois esta consulta não usa índice.
fonte
mongoose doc para encontrar. mongodb doc para regex.
Observe o primeiro argumento que passamos para
mongoose.findOne
a função:{ "name" : { $regex: /Ghost/, $options: 'i' } }
,"name"
é o campo do documento que você está procurando,"Ghost"
é a expressão regular,"i"
é a maiúsculas e minúsculas. Espero que isso ajude você.fonte
A consulta a seguir encontrará os documentos com maiúsculas e minúsculas necessárias de forma insensível e com ocorrência global também
fonte
É isso que estou usando.
fonte
Aqui está meu código com expressJS:
fonte
se eu quiser consultar todos os registros em alguma condição, posso usar isso:
fonte
$regex
quando você poderia apenas usar{ $exists: true }
.Complementando a resposta de @PeterBechP.
Não se esqueça de escapar dos caracteres especiais. https://stackoverflow.com/a/6969486
fonte
Esta é minha solução para converter todos os valores em req.body em um parâmetro LIKE de mangusto :
fonte