Baixe o app para aproveitar ainda mais
Prévia do material em texto
noSQL Not Only Sql Autor Vagner de Oliveira dos Reis Instalação e configuração: 1. Instalação Linux sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4 echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list sudo apt update sudo apt-get install -y mongodb sudo apt install mongodb-org Após a instalação verifique se o mongo esta ativo. sudo systemctl status mongodb Se necessário habilite e/ou inicie o serviço. sudo systemctl enable mongodb sudo systemctl start mongodb Pronto ! Agora rode o seguinte comando para verificar se tudo ocorreu bem : mongo – -version 2. Instalação Windows Passo 1 Acesse a seguinte pagina : https://www.mongodb.com/download-center/community após baixar , execute o instalador , nessa etapa você pode sempre seguir NEXT , e por fim INSTALL. Após a instalação ser concluída navegue ate a pasta C:\mongodb\bin para visualizar os arquivos gerados Passo 2 Você precisa criar um diretório para armazenar os dados , crie o seguinte diretório : c:\mond\db https://www.mongodb.com/download-center/community Abra um prompt de comando de sua preferência e execute o seguinte comando C:\mongodb\bin\mongod.exe --dbpath C:\data\db\ Passo 3 Adicione o mongodb as variáveis de ambiente , clique com o botão direito em Meu Computador depois em Propriedades e por fim clique em configurações avançadas do sistema. Clique em variáveis de ambiente Clique em editar na variável path Por fim , cole o seguinte caminho Agora o mongodb pode ser acessado em qualquer parte do sistema não sendo necessário estar na pasta onde foi instalado. Comando Iniciais Antes de começar a desenvolver precisamos “entrar” no mongodb , abra o terminal e execute o comando mongo. Pronto agora podemos iniciar os scripts. Crie uma tabela use catalago Cria uma base de dados chamada catalago , obs .: se tentarmos listar as tabelas existentes , a tabela criada anteriormente não será mostrada pois ela não contem nem uma collection presente dentro dela , uma tabela só se torna visível se conter ao menos uma collection . Agora que já temos uma base de dados criada vamos criar uma collection para o catalago com o nome de filmes. db.createCollection(‘filmes’); Agora , com a collection criada vamos inserir três registros . db.filmes.insert( { nome: "A era do gelo", ano: new Date(2000,10,10), equipe: { direcao: ["Alberto Martes","Ana Maria de Catro"], animacao: ["Kelly Oliveira","Paulo Silva","Dianna Monteiro"] }, paisesNo: ["Coréia do Norte","Japão"] } ); -------------------------------------------------------- db.filmes.insert( { nome: "Jogos Virtuais", ano: new Date(2010,09,09), equipe: { direcao: ["Alberto Martes","Silvia Magalhães"], animacao: ["Petter Willian","Janaina Moraes de Mello","Alvaro Peres Aldaz"] }, paisesNo: ["Coréia do Norte","Japão"] } ); ------------------------------------------------------------ db.filmes.insert( { nome: "Jogos Mortais IV", ano: new Date(2018,10,06), equipe: { direcao: ["Maria Clara","Wellison de Jesus "], animacao: ["Ariana Cordoba","Ricardo José de Assís","Camila de Castro"] }, paisesNo: ["China","Canada"], faixaEtaria: "18" } ); Pronto , agora com as três collections podemos executar algumas ações como listar , alterar , deletar entre outros. Para listar todos os filmes existentes podemos usar o comando: db.filmes.find(); Ou com uma formatação mais amigável: db.filmes.find().pretty() Para filtrar um dado específico pode ser passado um ou mais argumentos dentro do find , observe alguns exemplos. Exemplo 1 pelo id do documento: db.filmes.find ( { “_id”: ObjectId(“0f12f6f4f6f4f4”) }) Exemplo 2 um da direcao e nome do filme: db.filmes.find( { "equipe.direcao": "Alberto Martes", "nome": "Jogos Virtuais", } ); traz um resultado Exemplo 3 um da direcao ou nome do filme: db.filmes.find( { $or: [ {"equipe.direcao": "Alberto Martes"}, {"nome": "Jogos Virtuais"}, ] }) traz dois resultados Exemplo 4 um da direcao ou nome do filme e equipe animacao: db.filmes.find( { $or: [ {"equepe.direcao": "Alberto Martes"}, {"nome": "Jogos Virtuais"}, ], "equipe.animacao": "Petter Willian" }) traz um resultado Exemplo 5 que contenha um da equipe de animacao: db.filmes.find( { "equipe.animacao": { $in: [ "Camila de Castro" , "Alvaro Peres Aldaz" ]}}) Exemplo 6 , você pode reparar que no terceiro registro em equipe.direcao inserimos "Wellison de Jesus " com um espaco em branco no final do nome , com o update podemos retirar esse espaço: db.filmes.update( { "equipe.direcao": "Wellison de Jesus " }, { $set: { "equipe.direcao": "Wellison de Jesus" } } ) O exemplo acima por padrão e por motivo de segurança só altera o valor de um registro , caso precise alterar o valor em mais de uma ocorrência usar o multi = true , ex.: db.filmes.update( { "equipe.direcao": "Wellison de Jesus " }, { $set: { "equipe.direcao": "Wellison de Jesus" } } , { multi: true }) Exemplo 7 , altera todos os elementos do array direção onde o nome e Jogos Virtuais : db.filmes.update( { "nome": "Jogos Virtuais" }, { $set: { "equipe": { "direcao": ["Namoel Akali","Jorge Silva"] } } } ) Exempro 8 , adiciona mais um diretor onde o nome e o paissesNo correspondam : db.filmes.update( { nome: "A era do gelo", paisesNo: "Coréia do Norte" }, { $push: { "equipe.direcao" : "Anitta Fernandes" } } ) Ou podemos adicionar o item no array somente se ele ainda não existir. Comando $addToSet : db.filmes.update( { nome: "A era do gelo", paisesNo: "Coréia do Norte" }, { $addToSet: { "equipe.direcao" : "Anitta Fernandes" } } ) Para adicionar mais de um registro ao mesmo tempo usar o comando $each : db.filmes.update( { nome: "A era do gelo", }, { $push: { "equipe.direcao" : { $each: ["Novo Diretor 01", "Novo Diretor 02"] } } } ) Comandos iniciais parte 2 Vamos criar uma nova collection com o nome de mediaClassificacao e inserir os seguintes documentos: Primeiramente crie uma collection: db.createCollection(‘ mediaClassificacao’); Depois insira os documentos: db.mediaClassificacao.insert({ mes : "janeiro", classificacao: [5.5 , 7.1 , 5.9 , 6.1] }) db.mediaClassificacao.insert({ mes : "Fevereiro", classificacao: [8.5 , 8.2 , 7.9 , 9.1] }) db.mediaClassificacao.insert({ mes : "Abril", classificacao: [4.5 , 6.2 , 2.9 , 4.1] }) Agora vamos fazer uma busca com as classificações maior que 7: db.mediaClassificacao.find({ classificacao : { $gt : 7} }) Perceeba que traz dois resultados , caso queira trazer somente um usar o findOne: db.mediaClassificacao.findOne({ classificacao : { $gt : 7} }) O comando $nin não traz os elementos especificado dentro do array: db.mediaClassificacao.findOne({ classificacao : { $nin : [4,5 , 8,5]} }) Também é possível buscar os documentos de forma ordenada com o comando sort: db.mediaClassificacao.find().sort({mes : 1}) → Ordem crescente db.mediaClassificacao.find().sort({mes : -1}) → Ordem decrescente Agora vamos trazer de em ordem crescente os dois primeiros resultados com notas mais que 2 db.mediaClassificacao.find({ classificacao : { $gt : 2} }) .sort({"mes": 1}) .limit(2) Tabela com os principais operadores :
Compartilhar