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)

  1. Crie um Banco de Dados chamado "UnipSoccer":
    use UnipSoccer
  2. Crie uma coleção chamada Jogadores com 1 jogador:
    db.Jogadores.insert({nome: 'Leonardo'})
  3. Delete essa coleção:
    db.Jogadores.drop()
  4. 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: {}}])
  5. Execute uma consulta com todos os jogadores cadastrados:
    db.Jogadores.find()
  6. Altere todos os atributos status dos jogadores para conter GOLS, FALTAS e CARTOES:
    db.Jogadores.updateMany({}, {$set: {status: { "GOLS": 10, "FALTAS": 10, "CARTOES": 3 }}})

Entradas relacionadas: