MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Da MySQL a MongoDB - Un cheat sheet per l'amministratore

La maggior parte delle applicazioni software al giorno d'oggi implica una memorizzazione dinamica dei dati per un ampio riferimento futuro nell'applicazione stessa. Sappiamo tutti che i dati sono archiviati in un database che rientra in due categorie che sono:DBMS relazionali e non relazionali.

La scelta della scelta tra questi due dipenderà interamente dalla struttura dei dati, dalla quantità di dati coinvolti, dalle prestazioni del database e dalla scalabilità.

I DBMS relazionali archiviano i dati nelle tabelle in termini di righe in modo tale da utilizzare SQL (Structured Querying Language), rendendoli una buona scelta per le applicazioni che coinvolgono più transazioni. Includono MySQL, SQLite e PostgreSQL.

D'altra parte, i DBMS NoSQL come MongoDB sono orientati ai documenti in modo tale che i dati vengano archiviati in raccolte in termini di documenti. Ciò offre una maggiore capacità di archiviazione per un ampio set di dati, quindi un ulteriore vantaggio in termini di scalabilità.

In questo blog presumiamo che tu abbia una migliore conoscenza di MongoDB o MySQL e quindi vorremmo conoscere la correlazione tra i due in termini di query e struttura del database.

Di seguito è riportato un cheat sheet per familiarizzare ulteriormente con l'esecuzione di query da MySQL a MongoDB.

Cheat sheet da MySQL a MongoDB - Termini

Termini di MySQL Termini di MongoDB Spiegazione
Tabella Collezione Questo è il contenitore di archiviazione per i dati che tendono ad essere simili negli oggetti contenuti.
Riga Documento Definisce l'entità oggetto singolo nella tabella per MySQL e la raccolta nel caso di MongoDB.
Colonna Campo Per ogni elemento memorizzato, ha proprietà che sono definite da diversi valori e tipi di dati. In MongoDB, i documenti nella stessa raccolta possono avere campi diversi l'uno dall'altro. In MySQL, ogni riga deve essere definita con le stesse colonne di quelle esistenti.
Chiave primaria Chiave primaria Ogni oggetto memorizzato è identificato con un valore di campo univoco nel caso di MongoDB abbiamo il campo _id impostato automaticamente mentre in MySQL puoi definire la tua chiave primaria che è incrementale quando crei nuove righe.
Unità di tabelle Incorporamento e collegamento di documenti Connessione associata a un oggetto in una raccolta/tabella diversa ai dati in un'altra raccolta/tabella.
dove $corrispondenza Selezione dei dati che corrispondono ai criteri.
gruppo $gruppo Raggruppare i dati secondo alcuni criteri.
rilascia $unset Rimozione di una colonna/campo da una riga/documento/
imposta $set Impostazione del valore di una colonna/campo esistente su un nuovo valore.
Diversinines Diventa un DBA MongoDB - Portare MongoDB in produzioneScopri ciò che devi sapere per distribuire, monitorare, gestire e ridimensionare MongoDBScarica gratuitamente

Dichiarazioni di schema

Istruzioni sulla tabella MySQL Rendiconti di raccolta MongoDB Spiegazione

Il database e le tabelle vengono creati esplicitamente tramite il pannello di amministrazione di PHP o definiti all'interno di uno script, ad esempio

Creazione di un database

CREATE DATABASE database_name

Creazione di una tabella

CREATE TABLE users (
    id MEDIUMINT NOT NULL
        AUTO_INCREMENT,
    UserId Varchar(30),
    Age Number,
    Gender char(1),
    Name VarChar(222),
    PRIMARY KEY (id)
)

Il database può essere creato in modo implicito o esplicito. Implicitamente durante il primo inserimento del documento vengono creati il ​​database e la raccolta, nonché un campo _id automatico che viene aggiunto a questo documento.

db.users.insert( {
    UserId: "user1",
    Age: 55,
    Name: "Berry Hellington",
    Gender: "F",
 } )

Puoi anche creare il database in modo esplicito eseguendo questo commento in Mongo Shell

db.createCollection("users")

In MySQL, devi specificare le colonne nella tabella che stai creando e impostare alcune regole di convalida come in questo esempio il tipo di dati e la lunghezza che va a una colonna specifica. Nel caso di MongoDB, non è necessario definire né i campi che ogni documento deve contenere né le regole di convalida che devono contenere i campi specificati.

Tuttavia, in MongoDB per l'integrità e la coerenza dei dati puoi impostare le regole di convalida utilizzando JSON SCHEMA VALIDATOR

Eliminazione di una tabella

DROP TABLE users
db.users.drop()

Si tratta di istruzioni per l'eliminazione di una tabella per MySQL e la raccolta nel caso di MongoDB.

Aggiunta di una nuova colonna chiamata join_date

ALTER TABLE users ADD join_date DATETIME

Rimozione della colonna join_date se già definita

ALTER TABLE users DROP COLUMN join_date DATETIME

Aggiunta di un nuovo campo chiamato join_date

db.users.updateMany({},{$set:{‘join_date’: new Date()})

Questo aggiornerà tutti i documenti nella raccolta per avere la data di iscrizione come data corrente.

Rimozione del campo join_date se già definito

db.users.updateMany({},{$unset:{‘join_date’: “”})

Questo rimuoverà il campo join_date da tutti i documenti di raccolta.

Alterare la struttura dello schema aggiungendo o eliminando una colonna/campo.

Poiché l'architettura MongoDB non applica rigorosamente la struttura del documento, i documenti possono avere campi diversi l'uno dall'altro.

Creazione di un indice con la colonna UserId crescente e Age decrescente

CREATE INDEX idx_UserId_asc_Age_desc
ON users(UserId)

Creazione di un indice che coinvolga i campi UserId ed Age.

db.users.ensureIndex( { UserId: 1, Age: -1 } )

Gli indici sono generalmente creati per facilitare il processo di interrogazione.

INSERT INTO users(UserId,
                  Age,
                  Gender)
VALUES ("user1",
        25,
        "M")
db.users.insert( {
       UserId: "bcd001",
       Age: 25,
       Gender: "M",
     Name: "Berry Hellington",
} )

Inserimento di nuovi record.

DELETE FROM users
WHERE Age = 25
db.users.deleteMany( { Age = 25 } )

Eliminazione di record dalla tabella/raccolta la cui età è pari a 25.

DELETE FROM users
db.users.deleteMany({})

Eliminazione di tutti i record dalla tabella/raccolta.

SELECT * FROM users
db.users.find()

Restituisce tutti i record dalla tabella/raccolta utenti con tutte le colonne/campi.

SELECT id, Age, Gender FROM users
db.users.find(
   { },
   { Age: 1, Gender: 1 }
)

Restituisce tutti i record dalla tabella/raccolta utenti con colonne/campi Età, Sesso e chiave primaria.

SELECT  Age, Gender FROM users
db.users.find(
   { },
 { Age: 1, Gender: 1,_id: 0}
)

Restituisce tutti i record dalla tabella/raccolta utenti con colonne/campi Età e Sesso. La chiave primaria è omessa.

SELECT * FROM users WHERE Gender = “M”
db.users.find({ Gender: "M"})

Restituisce tutti i record dalla tabella/raccolta degli utenti il ​​cui valore di genere è impostato su M.

SELECT Gender FROM users WHERE Age = 25
db.users.find({ Age: 25}, { _id: 0, Gender: 1})

Restituisce tutti i record dalla tabella/raccolta utenti con solo il valore Sesso ma il cui valore Età è uguale a 25.

SELECT * FROM users WHERE Age = 25 AND Gender = ‘F’
db.users.find({ Age: 25, Gender: "F"})

Restituisce tutti i record dalla tabella/raccolta degli utenti il ​​cui valore di genere è impostato su F e l'età è 25.

SELECT * FROM users WHERE  Age != 25
db.users.find({ Age:{$ne: 25}})

Restituisce tutti i record dalla tabella/raccolta utenti il ​​cui valore di età non è uguale a 25.

SELECT * FROM users WHERE Age = 25 OR Gender = ‘F’
db.users.find({$or:[{Age: 25, Gender: "F"}]})

Restituisce tutti i record dalla tabella/raccolta degli utenti il ​​cui valore di genere è impostato su F o l'età è 25.

SELECT * FROM users WHERE Age > 25
db.users.find({ Age:{$gt: 25}})

Restituisce tutti i record dalla tabella/raccolta degli utenti il ​​cui valore di età è maggiore di 25.

SELECT * FROM users WHERE Age <= 25
db.users.find({ Age:{$lte: 25}})

Restituisce tutti i record dalla tabella/raccolta degli utenti il ​​cui valore di età è inferiore o uguale a 25.

SELECT Name FROM users WHERE Name like "He%"
db.users.find(
  { Name: /He/ }
)

Restituisce tutti i record dalla tabella/raccolta utenti il ​​cui valore Nome ha lettere He.

SELECT * FROM users WHERE Gender = ‘F’ ORDER BY id ASC
db.users.find( { Gender: "F" } ).sort( { $natural: 1 } )

Restituisce tutti i record dalla tabella/raccolta degli utenti il ​​cui valore di genere è impostato su F e ordina questo risultato in ordine crescente della colonna id nel caso di MySQL e dell'ora inserita nel caso di MongoDB.

SELECT * FROM users WHERE Gender = ‘F’ ORDER BY id DESC
db.users.find( { Gender: "F" } ).sort( { $natural: -1 } )

Restituisce tutti i record dalla tabella/raccolta degli utenti il ​​cui valore di genere è impostato su F e ordina questo risultato in ordine decrescente della colonna id nel caso di MySQL e l'ora inserita nel caso di MongoDB.

SELECT COUNT(*) FROM users
db.users.count()

o

db.users.find().count()

Conta tutti i record nella tabella/raccolta degli utenti.

SELECT COUNT(Name) FROM users
db.users.count({Name:{ $exists: true }})

o

db.users.find({Name:{ $exists: true }}).count()

Conta tutti i record nella tabella/raccolta utenti che hanno un valore per la proprietà Nome.

SELECT * FROM users LIMIT 1
db.users.findOne()

o

db.users.find().limit(1)

Restituisce il primo record nella tabella/raccolta degli utenti.

SELECT * FROM users WHERE Gender = ‘F’ LIMIT 1
db.users.find( { Gender: "F" } ).limit(1)

Restituisce il primo record nella tabella/raccolta degli utenti che ha il valore di genere uguale a F.

SELECT * FROM users LIMIT 5 SKIP 10
db.users.find().limit(5).skip(10)

Restituisce i cinque record nella tabella/raccolta degli utenti dopo aver saltato i primi cinque record.

UPDATE users SET Age = 26 WHERE age > 25
db.users.updateMany(
  { age: { $gt: 25 } },
  { $set: { Age: 26 } }
)

Imposta l'età di tutti i record nella tabella/raccolta utenti che hanno un'età compresa tra 25 e 26 anni.

UPDATE users SET age = age + 1
db.users.updateMany(
  {} ,
  { $inc: { age: 1 } }
)

Ciò aumenta di 1 l'età di tutti i record nella tabella/raccolta degli utenti.

UPDATE users SET age = age - 1
WHERE id = 1
db.users.updateMany(
  {} ,
  { $inc: { age: -1 } }
)

Ciò riduce di 1 l'età del primo record nella tabella/raccolta degli utenti.

Per gestire MySQL e/o MongoDB centralmente e da un unico punto, visita:https://diversealnines.com/product/clustercontrol.