Guia de MongoDB, NoSQL e Desenvolvimento Mobile
Classificado em Computação
Escrito em em
português com um tamanho de 6,71 KB
Gestures e Interação Mobile
O que são gestures?
São formas de interação comuns presentes em aplicativos móveis que se tornaram padrão ao longo da evolução tecnológica.
Programação Reativa e Observação
- Observável: É o tipo de informação que fica “observando” alguma alteração nos dados. Diferencia-se de um Listener.
- Listener: Mecanismo que realiza um aviso ou ação imediatamente após uma alteração no banco de dados.
Fundamentos do MongoDB
MongoDB: Este banco de dados foi projetado para armazenar e processar grandes volumes de dados distribuídos em diversas máquinas.
- MONGOD: Representa o servidor do banco de dados.
- MONGO: Representa o cliente (shell) de interação.
- Vantagem: Alta capacidade de processamento de dados simultâneos.
Comandos e Operações de Banco de Dados
use unip: Define o nome do banco de dados. Ao criar uma coleção, o banco é efetivamente criado na primeira execução.db.leonardo.insert([{ _id: 1, nome: "Leonardo"}, { _id: 2, nome: "Milena"}]): Cria dois documentos com IDs específicos dentro da coleção.show dbs: Exibe os bancos de dados existentes.show collections: Exibe todas as coleções do banco atual.- Insert: Operação que cria o banco, a coleção e os dados caso ainda não existam.
db.alunos.count(): Utilizado para contar o número de registros.- ObjectId: Identificador gerado por padrão, embora seja possível customizá-lo.
- Upsert: Opção que realiza a inserção do registro caso ele não seja encontrado durante uma operação de update (quando definido como
true). - Drop: Comando que afeta e remove a coleção inteira.
- Delete: Comando que afeta e remove registros específicos.
Operadores de Comparação
- $eq: Filtra elementos iguais ao valor informado.
- $gt: Filtra elementos maiores que o valor.
- $gte: Filtra elementos maiores ou iguais ao valor.
- $lt: Filtra elementos menores que o valor.
- $lte: Filtra elementos menores ou iguais ao valor.
- $ne: Filtra elementos diferentes do valor informado.
- $in: Filtra elementos onde o valor do atributo está em uma lista (array).
- $nin: Filtra elementos onde o valor do atributo não está na lista (array).
Operadores Lógicos
- $or: Operador lógico OU.
- $and: Operador lógico E (AND).
- $not: Operador lógico NÃO (NOT).
- $nor: Operador lógico NEM (NOR).
Consultas e Estrutura de Dados
Projeção: Consiste em realizar uma consulta retornando apenas os atributos necessários para o sistema.
Projeções na Query: É possível configurar a visibilidade dos campos utilizando os códigos 0 (ocultar) ou 1 (exibir). OBS: O campo _id sempre será exibido (1) por padrão, a menos que seja explicitamente ocultado.
Query: Mecanismo que serve para buscar qualquer tipo de informação.
The Aggregation Pipeline: É uma sequência de estágios (pipeline) onde cada etapa transforma os dados aplicando técnicas específicas de processamento.
Cloud Firestore e Modelagem NoSQL
Cloud Firestore: Banco de dados NoSQL hospedado na nuvem, baseado em um modelo de armazenamento orientado a documentos.
- Modelo Orientado a Documentos: Estrutura que facilita o agrupamento de dados relacionados.
- Coleção: Agrupamento de documentos definido conforme a necessidade do usuário.
- Documento: Cada registro possui um ID único e pode conter diversos campos.
- Data: Refere-se aos atributos e características contidos no documento.
SASS e Estilização Avançada
SASS: Extensão do CSS que adiciona poder e elegância à linguagem de folhas de estilo, permitindo o uso de variáveis, regras aninhadas e funções.
- Mixin: Conceito avançado de OOP aplicável ao CSS. Permite que uma classe contenha uma combinação de métodos que podem ser reutilizados por outras classes, mesmo sem relacionamento direto entre elas.
- Extended: Baseia-se no conceito de herança, similar ao Mixin, mas utilizado quando as classes possuem um relacionamento direto.
Comparativo: SQL vs NoSQL
- SQL: Recomendado quando a aplicação exige alta consistência de dados.
- NoSQL: Recomendado para os demais casos, visando principalmente a escalabilidade e a melhora de performance.
Exercícios Práticos (MongoDB)
- Crie um Banco de Dados chamado "UnipSoccer":
use UnipSoccer - Crie uma coleção chamada Jogadores com 1 jogador:
db.Jogadores.insert({nome: 'Leonardo'}) - Delete essa coleção:
db.Jogadores.drop() - Crie uma coleção chamada Jogadores com 10 jogadores (Nome, Posição, numJogos e status vazio):
db.Jogadores.insert([{nome: 'Leonardo1', pos:'GOL', numJogos: 10, status: {}}, {nome: 'Leonardo2', pos:'DEF', numJogos: 10, status: {}}, {nome: 'Leonardo3', pos:'MC', numJogos: 10, status: {}}, {nome: 'Leonardo4', pos:'ATA', numJogos: 10, status: {}}, {nome: 'Leonardo5', pos:'GOL', numJogos: 10, status: {}}, {nome: 'Leonardo6', pos:'DEF', numJogos: 10, status: {}}, {nome: 'Leonardo7', pos:'MC', numJogos: 10, status: {}}, {nome: 'Leonardo8', pos:'ATA', numJogos: 10, status: {}}, {nome: 'Leonardo9', pos:'GOL', numJogos: 10, status: {}}, {nome: 'Leonardo10', pos:'DEF', numJogos: 10, status: {}}]) - Execute uma consulta com todos os jogadores cadastrados:
db.Jogadores.find() - Altere todos os atributos status dos jogadores para conter GOLS, FALTAS e CARTOES:
db.Jogadores.updateMany({}, {$set: {status: { "GOLS": 10, "FALTAS": 10, "CARTOES": 3 }}})