🍃 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
mongoshe 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 = valoratinge a tabela inteira se esquecer oWHERE. No MongoDB, oupdateOneé cirúrgico e trava na primeira correspondência, evitando acidentes nucleares de DBA. 🚀🛡️