1
resposta

Como pesquisar por parte do nome

No mongoDB eu poderia usar db.alunos.find({"nome" : /Bru/i});

tentei mas não deu certo

public List<Aluno> pesquisaPor(String nome) {
    criarConexao();
    MongoCollection<Aluno> alunosMongo = pegaAlunoDoMongoDB();
    MongoCursor<Aluno> mongoCursor = alunosMongo.find(Filters.eq("nome", "/"+nome+"/i"), Aluno.class).iterator();
    List<Aluno> alunos = popularAlunos(mongoCursor);
    this.cliente.close();
    return alunos;
}
1 resposta

Olá Bruno, tudo bem?

Pelo que entendi, você está com dificuldades em pesquisar por parte do nome no MongoDB utilizando Java.

Uma possível solução para o seu problema é utilizar a classe Pattern do Java para criar uma expressão regular que busque por parte do nome. Você pode fazer isso da seguinte forma:

Pattern pattern = Pattern.compile(".*" + nome + ".*", Pattern.CASE_INSENSITIVE);
MongoCursor<Aluno> mongoCursor = alunosMongo.find(Filters.regex("nome", pattern), Aluno.class).iterator();

Dessa forma, a expressão regular criada irá buscar por qualquer ocorrência do nome informado, independentemente de estar no início, meio ou fim do campo "nome". Além disso, utilizei o modificador "CASE_INSENSITIVE" para que a busca não seja sensível a maiúsculas e minúsculas.

Espero ter ajudado e bons estudos!