Brook Preloader

Differenze tra MySql e MongoDB nelle operazioni CRUD

 

CRUD

Mentre MySQL conosce il ben noto Structured Query Language (SQL), MongoDB reinventa il suo Mongo Query Language (MQL) in modo tale che assomigli fortemente al linguaggio JavaScript. Ecco le principali funzionalità CRUD (Creation, Read, Update e Delete) di entrambi i linguaggi.

 

SELEZIONE

 

-- SQL
SELECT * FROM Clienti;

SELECT * FROM Clienti WHERE cod_fis = "PCAGNN";

SELECT nominativo WHERE cod_fis = "PCAGNN";

 

// MQL
db.find.clienti();

db.find.clienti({"cod_fis": "PCAGNN"});

db.find.clienti(
    {"cod_fis": "PCAGNN"},
    {"_id":0, "nominativo":0, "cod_fis": 1}
);

 

INSERIMENTO

 

-- SQL
INSERT INTO Clienti (nominativo, cod_fis) VALUE
("Marina Massironi", "MRNMSR");

INSERT INTO Clienti (nominativo, cod_fis) VALUES
("Virgilio Dantesco", "VRGDNT"),
("Appio Oppio", "APPOPP");

INSERT INTO Clienti (cliID, nominativo, cod_fis) VALUE
(9, "Armeggio Barca", "ARMBRC");

 

// MQL
db.clienti.insert({"nominativo": "Marina Massironi", "cod_fis": "MRNMSR"});

db.clienti.insert(
	[
		{"nominativo": "Virgilio Dantesco", "cod_fis": "VRGDNT"},
		{"nominativo": "Appio Oppio", "cod_fis": "APPOPP"},
	]
);

db.clienti.insert(
    {
        "_id" : ObjectId("51e0373c6f35bd826f47e9a0"),
        "nominativo": "Marina Massironi", 
        "cod_fis": "MRNMSR"
    }
);

 

MODIFICA

 

-- SQL
UPDATE Clienti SET nominativo = "Ciccio Pasticcio" WHERE cod_fis = "APPOPP";

 

// MQL
db.clienti.update(
    {"cod_fis"::{$eq:"APPOPP"}}, 
    {$set:{"nominativo":"Ciccio Pasticcio"}}
)

Molto similmente a quello che succede in SQL, MongoDB utilizza come operatori di comparazione delle tipologie particolari sintattiche quali:

 

  • $eq – Equal
  • $lt – Lower than
  • $gt – Greater than
  • $ne – Not equal

Mentre l’operatore $set viene introdotto per la sostituzione di un valore con il corrente appena introdotto. Questa tipologia di elemento supporta anche valori multipli da sostituire.

Per rimuovere un valore dal document selezionato basta utilizzare l’operatore $unset come in questo caso:

 

// MQL
db.clienti.update(
    {"cod_fis"::{$eq:"APPOPP"}}, 
    {$unset:{"nominativo":""}}
)

Se si vuole invece rinominare un campo all’interno del document basta utilizzare l’operatore $rename come in questo frammento di codice:

 

db.students.updateOne(
   { _id: ObjectId("51e0373c6f35bd826f47e9a0" },
   { $rename: { 'nominativo': 'nome' } }
)

che avrà come effetto:

 

{
    "_id" : ObjectId("51e0373c6f35bd826f47e9a0"),
    "nome": "Marina Massironi", 		//Variato da "nominativo"
    "cod_fis": "MRNMSR"
}

 

ELIMINAZIONE

 

-- SQL
DELETE FROM Clienti WHERE cod_fis = "PCAGNN";

 

// MQL
db.clienti.remove({"cod_fis":"PCAGNN"})