Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

🍃 OPERAÇÕES CRUD MODERNAS E SINTAXE MQL

Tendo compreendido que o NoSQL é focado em matrizes declarativas flexíveis (Documentos BSON), você deve abandonar a mentalidade rígida do SQL em prol da versatilidade ágil do MQL (MongoDB Query Language). 🛡️🧩


Objetivo: Diferenciar o comportamento transacional do SQL para a manipulação rápida de documentos usando funções Javascript assíncronas no motor V8 do MongoDB 7.0 (via mongosh e Compass).


📗 PASSO 1: Estrutura Base (Collection MQL)

Em ambientes RDBMS (🐘 PostgreSQL), as faturas dependem dos produtos, os telefones da tabela dependente e todos são fortemente tipados.

No MongoDB 7.0, os dados residem numa Collection. Ao invés de Insert, Select, Update e Delete monolíticos, o MongoDB padronizou seus vetores via métodos tipificados JavaScript.


📗 PASSO 2: INSERT (Create)

A função insertOne() e insertMany() recebem objetos literais estruturados e aceitam metadados não tipados (JSON arrays nativos):

/* INSERINDO O CLIENTE COM ARRAY (TELEFONES) NA COLLECTION DE "USUARIOS" */
db.usuarios.insertOne({
    nome: "Linus Torvalds",
    email: "linus@kernel.org",
    idade: 54,
    telefones: ["55-8888-1234", "55-9999-4321"],
    endereco: {
        logradouro: "Rua Open Source, 101",
        cep: "1001-500"
    },
    status_assinatura: "Ativa"
});

📗 PASSO 3: FIND (Read)

No MQL, o SELECT * FROM TABELA cede espaço à abstração mais veloz e paramétrica da busca por expressões regulares e encadeamentos ($gt, $in e propriedades dot.notation):

/* BUSCANDO CLI COM MAIS DE 40 ANOS (Gt = Greater Than) */
db.usuarios.find({ idade: { $gt: 40 } });

/* BUSCAR CLIENTE PELO LUGAR NIDIFICADO (DOT NOTATION) */
db.usuarios.find({ "endereco.cep": "1001-500" });

📗 PASSO 4: UPDATE (Update Parcial BSON)

Se errar a lógica do comando e submeter o nó inteiro em vez de apenas o parâmetro usando a instrução chave de atualização (O operador set), o arquivo JSON é sobrescrito:

/* O OPERADOR $SET SÓ ALTERA A CHAVE SELECIONADA. SE NÃO LHE INSTRUIR, ELE APAGA TODO RESTO! */
db.usuarios.updateOne(
    { email: "linus@kernel.org" }, 
    { $set: { status_assinatura: "Suspensa" } }
);

/* O OPERADOR $PUSH INSERE UM NOVO ITEM NO FINAL DE UM ARRAY */
db.usuarios.updateOne(
    { nome: "Linus Torvalds" }, 
    { $push: { telefones: "00-0000-0000" } }
);

📗 PASSO 5: DELETE (Removendo O Documento Inteiro)

/* Exclui o primeiro documento encontrado que tem menos de 18 anos */
db.usuarios.deleteOne({ idade: { $lt: 18 } });

⚠️ Diferença de Dialeto SQL vs MQL: No PostgreSQL 17, UPDATE table SET campo = valor atinge a tabela inteira se esquecer o WHERE. No MongoDB, o updateOne é cirúrgico e trava na primeira correspondência, evitando acidentes nucleares de DBA. 🚀🛡️