Importando arquivos CSV com MongoDB

Olá, hoje importaremos arquivos para o MongoDB. O MongoDB é um banco de dados não-relacional que traz o conceito de Banco de Dados Orientado a Documentos. Ele tem como característica conter informações importantes em um único documento. Deste modo, possibilita a consulta de documentos através de métodos avançados de agrupamento e filtragem.

Caso você não conheça o MongoDB e não sabia fazer um CRUD básico, recomendo a leitura do artigo:

https://www.mundojs.com.br/2020/03/17/crud-basico-com-mongodb/

Agora que você já leu, vamos lá!

Para realizar este exemplo, utilizei o site: https://people.sc.fsu.edu/~jburkardt/data/csv/csv.html que disponibiliza vários tipos de arquivos CSV. Para o nosso exemplo, utilizaremos o arquivo cities.csv, que contém diversos dados sobre cidades dos Estados Unidos.

Com o seu mongoDB devidamente configurado, começaremos a importar os arquivos.

Primeiro, precisamos abrir o diretório em que trabalharemos. Recomendo deixar o arquivo csv a ser importado no mesmo diretório. Utilize o comando cd diretorio para especificar o diretório a ser trabalhado.

Utilizando o comando mongoimport, precisamos especificar o nosso host, que no meu caso é 127.0.0.1. Após isso, utilizaremos a sintaxe -d nomedodocumento, que especifica em qual documento será importado. Caso não exista, será criado.

Utilizaremos também a sintaxe -d nomedacollection, que cria/especifica qual a coleção. Caso ela não exista, será criada.

Agora, precisamos especificar o tipo de arquivo que será importado. No nosso caso, é um arquivo CSV, mas nad aimpede você importar outros arquivos, como JSON etc. Para isso, utilizaremos a sintaxe –type csv.

Especificados o host, nome do documento, nome da collection e o tipo de arquivo, precisamos especificar o nome do arquivo + extensão a ser importado. Como já sabemos, o nosso arquivo é o cities.csv, e você usa a sintaxe –file para isso.

Por último, e não menos importante, usamos o comando –headerline que, em extensões do tipo csv ou tsv, especifica que a primeira linha da tabela será o nome das colunas.

E o comando ficará assim:

mongoimport --host=127.0.0.1 -d enderecos -c listaenderecos --type csv --file cities.csv --headerline

E a saída será:

connected to: mongodb://127.0.0.1/

128 document(s) imported successfully. 0 document(s) failed to import.

Com isso, importamos o nosso arquivo CSV com sucesso!

Utilizando o find(), verificamos que foi importado:

Gostou deste artigo? Comente abaixo!

CRUD básico com MongoDB

O MongoDB é um banco de dados não-relacional que traz o conceito de Banco de Dados Orientado a Documentos. Ele tem como característica conter informações importantes em um único documento. Deste modo, possibilita a consulta de documentos através de métodos avançados de agrupamento e filtragem.

Ele é um banco de dados NoSQL, onde não há presença de SQL. Deste modo, este tipo de banco de dados não traz consigo os fundamentos de um modelo relacional e com a linguagem SQL. Os bancos de dados orientados a documentos não fornecem relacionamentos entre documentos, o que mantém seu design sem esquemas.

Instalando o MongoDB:

Você pode realizar a instalação do MongoDB acessando o site: https://docs.mongodb.com/manual/installation/ e selecionar o seu sistema operacional. Baixe a versão community. Baixe o arquivo no formato msi e siga o passo a passo da instalação.

Feito este procedimento, você obterá acesso ao aplicativo Shell do MongoDB. Através deste Shell, podemos criar banco de dados, documentos e coleções. Execute o arquivo mongo.exe.

Realizando CRUD:

Criando coleções:

O mongoDB utiliza o armazenamento de documentos em coleções. As coleções são equivalentes a tabelas em bancos de dados relacionais. Utilize o comando use db para acessar o banco de dados db.

Podemos utilizar criar uma coleção em documento utilizando o comando createCollection().

Vamos criar a collection chamada teste:

db.createCollection("teste")

A mensagem de resposta será:

{ “ok” : 1 }

Agora, podemos verificar se a coleção foi criada, usando o comando:

show collections

E lá está a nossa resposta:

teste

INSERT():

Agora, iremos realizar a nossa operação de inserção na nossa collection, utilizando o comando insert (create):

db.teste.insert({nome: "Usuario 1", idade: 25, data_nascimento: "01/03/1990"})

E obtemos o resultado:

WriteResult({ “nInserted : 1 })

Assim, inserimos na nossa collection teste um novo usuário, chamado Usuario 1, com idade = 25 e nascido no dia 01/03/1990.

FIND():

Com o comando find(), podemos verificar a existência da coleção e seus dados. Funciona de maneira semelhante ao select da linguagem SQL:

db.teste.find()

E o resultado será:

{ "_id" : ObjectId("5e6a69e61f94c569504d99e4"), "nome" : "Usuario 1", "idade" : 25, "data_nascimento" : "01/03/1990" }

Observação: Quando não especificamos um ID, o próprio MongoDB se encarrega da criação de um.

Utilizando o método pretty, você terá o resultado formatado:

db.teste.find().pretty():
{

        "_id" : ObjectId("5e6a69e61f94c569504d99e4"),

        "nome" : "Usuario 1",

        "idade" : 25,

        "data_nascimento" : "01/03/1990"

}

 

UPDATE():

Com o método update(), atualizaremos os campos da coleção que desejarmos. Passamos por parâmetro primeiro o nome do usuário a ser atualizado na tabela, e após, as suas novas informações.

db.teste.update({ nome: "Usuario 1" }, {nome: "Usuario 2", idade: 30, data_nascimento: "03/07/1992"})

E a nossa saída será:

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

Agora, verificamos se o update foi realizado:

db.teste.find().pretty()

E ali está:

{

        "_id" : ObjectId("5e6a69e61f94c569504d99e4"),

        "nome" : "Usuario 2",

        "idade" : 30,

        "data_nascimento" : "03/07/1992"

}

 

REMOVE():

Para remover um usuário de uma coleção, podemos utilizar o método remove(), especificando o usuário a ser removido:

db.teste.remove({ nome: "Usuario 2"})

Saída:

WriteResult({ "nRemoved" : 1 })

Você pode utilizar o find() e verificar. Não existirá mais esse usuário.

 

DROP():

Para remover uma collection inteira, utilize o comando drop():

db.teste.drop()

Utilize o comando show collections para verificar se a coleção foi realmente removida.

 

Então é isso pessoal, terminamos o CRUD básico no MongoDB. Espero que tenham gostado. Deixe seu comentário.

Node.js: importando dados de um arquivo .csv para o mongoDB

Quem nunca precisou abrir arquivo para importar o seus dados para uma base de dados? Esse é um processo simples que ajuda muito outras equipes como de RH, Financeiro … etc.

Hoje eu irei demonstrar como importar dados de um arquivo .csv com algumas das batalhas que ocorreram na serie GOT (Game of Thrones), utilizando o Node.js e uma base de dados mongoDB.

Para pular a etapa de criação de um novo projeto eu irei utilizar a versão final desse artigo. Caso tenha interesse em clonar esse projeto, segue o seu link no meu GitHub: node-csv-mongodb.

O projeto está bem simples, abaixo você tem uma breve explicação de cada um dos arquivos utilizados.

Analisando ela nós temos:

  • config/db: arquivo de conexão com a nossa base de dados
  • models/battles.js: model contendo os campos do arquivo .csv
  • repository/battleRepository: arquivo de mapeamento da model com a collection do banco de dados
  • battles.csv: arquivo contendo algumas das batalhas que ocorreram na série GOT
  • index.js: nós iremos explorar esse arquivo melhor, mas por hora ele é o responsável por abrir o arquivo .csv e importar os dados para o nosso banco de dados

Abra o projeto no seu editor de textos preferido, em seguida adicione a sua string de conexão no arquivo db.js. Com essa etapa OK, vamos analisar o arquivo index.js:

const db = require('./config/db');
const battleRepository = require('./repository/battleRepository');

const csv = require('csv-parser');
const fs = require('fs');

fs.createReadStream('./battles.csv')
    .pipe(csv())
    .on('data', (row) => {
        battleRepository.create(row);
    })
    .on('end', () => {
        console.log('CSV file successfully processed')
    });

Analisando esse trecho de código nós temos:

  • 01: estamos importando o arquivo db.js com a nossa conexão com o db
  • 02: estamos importando o nosso repository, ele será responsável pelas nossas queries.
  • 04 e 05: importando os pacotes (fs) e (csv-parser) para manipularmos o arquivo .csv
  • 07 até a 14: estamos passando o caminho do arquivo que iremos manipular -> abrindo ele -> passando os dados para o método .create do nosso repository para ele salvar os dados no db, assim que ele finalizar irá retornar a mensagem: ‘CSV file successfully processed’.

Para ficar mais clara essa etapa, comente a linha 11 do arquivo e adicione um console.log(row); no lugar, em seguida execute o comando node index.js. Abaixo você tem uma imagem demonstrando esse passo:

Note que ele passa por cada uma das linhas do arquivo e retorna cada uma deles na row. Agora descomente a linha 11 e execute o comando node index.js novamente.

Para verificar se os dados foram importados corretamente, eu irei utilizar o Robo 3T para conectar na minha base de dados. Abaixo você tem uma imagem demonstrando esse passo:

Note que todos os arquivos formam importados corretamente.

Bom, a ideia desse artigo era ser algo rápido para demonstrar como importar um arquivo .csv em um banco de dados mongoDB.

Espero que tenham gostado e até um próximo artigo pessoal.