1
resposta

Mongodb find com filtro

Bom dia!

Como que eu faço para fazer um select com where com valor cnpj = a um valor, estou tentando usar os Filters.eq("cnpj", "valor"); dentro de colecoes.find() porém não está retornando o valor do cnpj que está gravado n base

@PostMapping(value = "/consultarCodigoBarrasPorCnpj", produces = MediaType.APPLICATION_JSON_VALUE, consumes =  MediaType.APPLICATION_JSON_VALUE)
    public List<CodigoBarraOutput> consultarCodigoBarrasPorCnpj(@RequestBody CodigoBarraInput codigoBarra) {
        LOGGER.info("Chamando método consultarCodigoBarrasPorCnpj");
        ResponseEntity<Mensagem> mensagem = null;
         List<CodigoBarraOutput> lista = new ArrayList<>();
        try {
            if(codigoBarra != null) {
                Codec<Document> codec = MongoClient.getDefaultCodecRegistry().get(Document.class);
                CodigoBarraOutputCodec codigoBarraOutputCodec = new CodigoBarraOutputCodec(codec);
                CodecRegistry registro = CodecRegistries.fromRegistries(MongoClient.getDefaultCodecRegistry(),
                        CodecRegistries.fromCodecs(codigoBarraOutputCodec));

             CodecRegistry pojoCodecRegistry = org.bson.codecs.configuration.CodecRegistries.fromRegistries(MongoClientSettings.getDefaultCodecRegistry(), org.bson.codecs.configuration.CodecRegistries.fromProviders(PojoCodecProvider.builder().automatic(true).build()));

                MongoClientOptions opcoes = MongoClientOptions.builder().codecRegistry(registro).build();
                MongoDatabase database = obterConexao(opcoes).withCodecRegistry(pojoCodecRegistry);
                MongoCollection<CodigoBarraOutput> colecao = database.getCollection(CODIGO_BARRAS, CodigoBarraOutput.class);
                CodigoBarraOutput saida = colecao.find(eq("cnpj", codigoBarra.getCnpj())).first();
                System.out.println(saida);
                //MongoCursor<CodigoBarraOutput> cursor = colecao.find(new Document("cnpj", new Document("$eq", codigoBarra.getCnpj()))).iterator();
//                 if (cursor.hasNext()) {
//                     CodigoBarraOutput saida = cursor.next();
//                     lista.add(saida);
//                 }
            }

            if(lista.isEmpty()) {
                mensagem = ResponseEntity.status(HttpStatus.OK).body(obterMensagem(-1, "Não há registros!"));
            }
            else {
                mensagem = ResponseEntity.status(HttpStatus.OK).body(obterMensagem(0, "Sucesso!"));
            }
            LOGGER.info("Finalizado método consultarCodigoBarrasPorCnpj");
        }
        catch(Exception e) {
            LOGGER.error(e);
            mensagem = ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
                    .body(obterMensagem(-1, "Falha no servidor!"));
        }
        finally {
            fecharConexao();
        }

        return lista;

    }

Att,

1 resposta

Olá Fernando, tudo bem com você?

Peço desculpas pela demora no retorno.

A forma que você está fazendo aqui: colecao.find(eq("cnpj", codigoBarra.getCnpj())).first();está correta Fernando. Então, você poderia mandar aqui como os seus dados estão armazenados no banco de dados e o que está sendo retornado no codigoBarra.getCnpj()? Assim, poderei te ajudar melhor.

Aguardo o seu retorno!