Solucionado (ver solução)
Solucionado
(ver solução)
10
respostas

Importação de Coleção

Boa tarde, como crio uma coieção do zero com indíces de chave única numa estrurtura de coleção pelo mongodb.

Atenciosamente,

Fernando Hiar.

10 respostas

Olá Fernando, tudo bem?

Não entendi muito bem o que você está querendo dizer, está se referindo a criação de índices de campo único em uma coleção no MongoDB? No caso, criar índices de campo único a partir de uma nova coleção?

Aguardo o seu retorno!

Ola Danielle!

Tudo bem?

Tem alguma forma de criar a colecao na parte fisica, como no sql createTable e com as constraints, tipo criar a colecao { id: integer, nome: string, endereco: string }

Algo do tipo.

Atenciosamente,

Fernando Hiar.

Bom Fernando, como o MongoDB é um banco de dados NoSQL, não é necessário criar uma estrutura já definida para as coleções, os documentos das coleções não precisam obrigatoriamente ter os mesmos campos. Então você pode tentar criar a parte física da coleção a partir da validação de esquemas, assim você pode criar uma coleção validando os tipos de dados de cada campo, assim sempre que for atualizado ou inserido um novo documento os tipos de dados podem ser validados. Você pode ver mais sobre essa validação de esquemas acessando a documentação do MongoDB.

Espero ter ajudado e bons estudos!

Eu conseguiria criar via código indíce de chava única, pois estou querendo colocar índices, mas não sei como faço isso sem ter uma coleção.

Bom Fernando, não é possível criar índices antes de criar uma coleção, então para você criar um índice de campo único você cria a coleção e depois defini em que campo será criado o índice.

A minha coleção é criada pelo meu código java, tem uma forma de definir a coleção e criar o índice? é isso que preciso. esse validator valida valor mínimo e máximo, not null.

Bom Fernando, você pode ver como definir a coleção e criar o índice, acessando esse link do MONGODB JAVA DRIVER, você pode ver sobre como acessar as coleções, criar documentos e como inserir vários documentos. E poderá ver como conectar a uma implantação do MongoDB e criar os índices acessando esse outro Link.

Espero ter ajudado!

Quando eu for tentar criar um índice de chave única, por exemplo, a cada inserção de uma coleção terei que colocar o mesmo índice, para cada coleção?

Por exemplo:

@PostMapping(value = "gravarCodigoBarras", produces = MediaType.APPLICATION_JSON_VALUE, consumes =  MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity<Mensagem> gravarCodigoBarras(@RequestBody CodigoBarraInput codigoBarra, UriComponentsBuilder uriBuilder) {
        LOGGER.info("mercadoMongoDB: Chamando método gravarCodigoBarras");
        ResponseEntity<Mensagem> mensagem = null;
        try {
            if(codigoBarra != null) {
                MongoDatabase database = obterConexao();
                MongoCollection<Document> colecao = database.getCollection(CODIGO_BARRAS);
                Document inserirCodigoBarras = obterDocument(codigoBarra);
                colecao.createIndex("{ email: 1 }", "{ unique: true }");
                colecao.insertOne(inserirCodigoBarras);
            }
            URI uri = uriBuilder.path("/gravarCodigoBarras/{id}").buildAndExpand(codigoBarra.getCodigoBarras()).toUri();
            mensagem = ResponseEntity.created(uri).body(obterMensagem(0, "Código de barras gravado com sucesso!"));
            LOGGER.info("mercadoMongoDB: Finalizado método gravarCodigoBarras");
        }
        catch(Exception e) {
            LOGGER.error(e);
            mensagem = ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
                    .body(obterMensagem(-1, "Falha no servidor!"));
        }
        finally {
            fecharConexao();
        }

        return mensagem;

    }

Eu terei que criar um índice a cada inserção de coleção, ou também terei que criar na atualização e consulta?

Atenciosamente,

Fernando Hiar.

solução!

Bom Fernando, quando se cria um índice para uma coleção, não é mais necessário referenciá-lo sempre que for realizar uma inserção, atualização ou consulta. Mas, caso seja criada uma nova coleção, é necessário criar um novo índice para ela, caso não queira utilizar o índice que já é criado por padrão.

Obrigado Danielle ;