MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MySQL zu MongoDB – Ein Admin-Spickzettel

Die meisten Softwareanwendungen beinhalten heutzutage eine gewisse dynamische Datenspeicherung für umfangreiche zukünftige Referenzen in der Anwendung selbst. Wir alle wissen, dass Daten in einer Datenbank gespeichert werden, die in zwei Kategorien fällt:Relationale und nicht relationale DBMS.

Ihre Wahl aus diesen beiden hängt vollständig von Ihrer Datenstruktur, der Menge der betroffenen Daten, der Datenbankleistung und der Skalierbarkeit ab.

Relationale DBMS speichern Daten in Tabellen in Form von Zeilen, sodass sie SQL (Structured Querying Language) verwenden, was sie zu einer guten Wahl für Anwendungen mit mehreren Transaktionen macht. Dazu gehören MySQL, SQLite und PostgreSQL.

Andererseits sind NoSQL-DBMS wie MongoDB dokumentenorientiert, sodass Daten in Sammlungen in Form von Dokumenten gespeichert werden. Dies ergibt eine größere Speicherkapazität für einen großen Datensatz und damit einen weiteren Vorteil bei der Skalierbarkeit.

In diesem Blog gehen wir davon aus, dass Sie entweder MongoDB oder MySQL besser kennen und daher die Korrelation zwischen den beiden in Bezug auf Abfragen und Datenbankstruktur kennenlernen möchten.

Nachfolgend finden Sie einen Spickzettel, um sich mit der Abfrage von MySQL an MongoDB vertraut zu machen.

Spickzettel von MySQL zu MongoDB - Begriffe

MySQL-Begriffe MongoDB-Nutzungsbedingungen Erklärung
Tabelle Sammlung Dies ist der Speicherbehälter für Daten, die in den enthaltenen Objekten tendenziell ähnlich sind.
Zeile Dokument Definiert die einzelne Objektentität in der Tabelle für MySQL und die Sammlung im Fall von MongoDB.
Spalte Feld Jedes gespeicherte Element hat Eigenschaften, die durch unterschiedliche Werte und Datentypen definiert werden. In MongoDB können Dokumente in derselben Sammlung unterschiedliche Felder haben. In MySQL muss jede Zeile mit denselben Spalten aus den vorhandenen definiert werden.
Primärschlüssel Primärschlüssel Jedes gespeicherte Objekt wird mit einem eindeutigen Feldwert identifiziert. Im Fall von MongoDB haben wir das _id-Feld automatisch gesetzt, während Sie in MySQL Ihren eigenen Primärschlüssel definieren können, der inkrementell ist, wenn Sie neue Zeilen erstellen.
Tabellenverknüpfungen Dokumente einbetten und verknüpfen Verbindung, die einem Objekt in einer anderen Sammlung/Tabelle zu Daten in einer anderen Sammlung/Tabelle zugeordnet ist.
wo $match Auswahl von Daten, die den Kriterien entsprechen.
Gruppe $gruppe Gruppieren von Daten nach bestimmten Kriterien.
fallen lassen $unset Entfernen einer Spalte/eines Feldes aus einer Zeile/einem Dokument/
eingestellt $set Den Wert einer bestehenden Spalte/Feld auf einen neuen Wert setzen.
Multiplenines Become a MongoDB DBA – Bringing MongoDB to ProductionErfahren Sie, was Sie wissen müssen, um MongoDBDownload for Free bereitzustellen, zu überwachen, zu verwalten und zu skalieren

Schemaanweisungen

MySQL-Tabellenanweisungen MongoDB-Erfassungsanweisungen Erklärung

Die Datenbank und die Tabellen werden explizit über das PHP-Admin-Panel erstellt oder in einem Skript definiert, z. B.

Erstellen einer Datenbank

CREATE DATABASE database_name

Erstellen einer Tabelle

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

Die Datenbank kann implizit oder explizit erstellt werden. Implizit werden beim Einfügen des ersten Dokuments die Datenbank und die Sammlung erstellt sowie ein automatisches _id-Feld zu diesem Dokument hinzugefügt.

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

Sie können die Datenbank auch explizit erstellen, indem Sie diesen Kommentar in der Mongo-Shell ausführen

db.createCollection("users")

In MySQL müssen Sie die Spalten in der Tabelle angeben, die Sie erstellen, sowie einige Validierungsregeln festlegen, wie in diesem Beispiel den Datentyp und die Länge, die zu einer bestimmten Spalte gehören. Im Fall von MongoDB ist es kein Muss, weder die Felder zu definieren, die jedes Dokument enthalten soll, noch die Validierungsregeln, die die angegebenen Felder enthalten sollen.

In MongoDB können Sie jedoch für Datenintegrität und -konsistenz die Validierungsregeln mit dem JSON SCHEMA VALIDATOR

festlegen

Löschen einer Tabelle

DROP TABLE users
db.users.drop()

Dies sind Anweisungen zum Löschen einer Tabelle für MySQL und zum Sammeln im Fall von MongoDB.

Hinzufügen einer neuen Spalte namens join_date

ALTER TABLE users ADD join_date DATETIME

Entfernen der Spalte join_date, falls bereits definiert

ALTER TABLE users DROP COLUMN join_date DATETIME

Hinzufügen eines neuen Felds namens join_date

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

Dadurch werden alle Dokumente in der Sammlung aktualisiert, sodass das Beitrittsdatum das aktuelle Datum ist.

Entfernen des Feldes join_date, falls bereits definiert

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

Dadurch wird das Feld join_date aus allen Sammlungsdokumenten entfernt.

Ändern der Struktur des Schemas durch Hinzufügen oder Löschen einer Spalte/eines Felds.

Da die MongoDB-Architektur die Dokumentstruktur nicht strikt durchsetzt, können Dokumente voneinander verschiedene Felder haben.

Erstellen eines Index mit aufsteigender UserId-Spalte und absteigendem Alter

CREATE INDEX idx_UserId_asc_Age_desc
ON users(UserId)

Erstellen eines Indexes mit den Feldern UserId und Age.

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

Indizes werden im Allgemeinen erstellt, um den Abfrageprozess zu erleichtern.

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

Neue Datensätze einfügen.

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

Löschen von Datensätzen aus der Tabelle/Sammlung, deren Alter gleich 25 ist.

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

Löschen aller Datensätze aus der Tabelle/Sammlung.

SELECT * FROM users
db.users.find()

Gibt alle Datensätze aus der Tabelle/Sammlung des Benutzers mit allen Spalten/Feldern zurück.

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

Gibt alle Datensätze aus der Benutzertabelle/Sammlung mit Alter, Geschlecht und Primärschlüsselspalten/-feldern zurück.

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

Gibt alle Datensätze aus der Benutzertabelle/Sammlung mit Alters- und Geschlechtsspalten/-feldern zurück. Der Primärschlüssel wird weggelassen.

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

Gibt alle Datensätze aus der Benutzertabelle/Sammlung zurück, deren Geschlechtswert auf M gesetzt ist.

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

Gibt alle Datensätze aus der Benutzertabelle/Sammlung zurück, die nur den Geschlechtswert haben, aber deren Alterswert gleich 25 ist.

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

Gibt alle Datensätze aus der Benutzertabelle/Sammlung zurück, deren Geschlechtswert auf F und Alter auf 25 gesetzt ist.

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

Gibt alle Datensätze aus der Benutzertabelle/Sammlung zurück, deren Alterswert ungleich 25 ist.

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

Gibt alle Datensätze aus der Benutzertabelle/Sammlung zurück, deren Geschlechtswert auf F oder Alter auf 25 gesetzt ist.

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

Gibt alle Datensätze aus der Benutzertabelle/Sammlung zurück, deren Alterswert größer als 25 ist.

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

Gibt alle Datensätze aus der Benutzertabelle/Sammlung zurück, deren Alterswert kleiner oder gleich 25 ist.

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

Gibt alle Datensätze aus der Benutzertabelle/Sammlung zurück, deren Name-Wert zufällig He-Buchstaben enthält.

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

Gibt alle Datensätze aus der Benutzertabelle/Sammlung zurück, deren Geschlechtswert auf F gesetzt ist, und sortiert dieses Ergebnis in aufsteigender Reihenfolge der ID-Spalte im Fall von MySQL und der eingefügten Zeit im Fall von MongoDB.

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

Gibt alle Datensätze aus der Benutzertabelle/Sammlung zurück, deren Geschlechtswert auf F gesetzt ist, und sortiert dieses Ergebnis in absteigender Reihenfolge der ID-Spalte im Fall von MySQL und der eingefügten Zeit im Fall von MongoDB.

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

oder

db.users.find().count()

Zählt alle Datensätze in der Benutzertabelle/Sammlung.

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

oder

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

Zählt alle Datensätze in der Benutzertabelle/Sammlung, die zufällig einen Wert für die Name-Eigenschaft haben.

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

oder

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

Gibt den ersten Datensatz in der Benutzertabelle/Sammlung zurück.

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

Gibt den ersten Datensatz in der Benutzertabelle/Sammlung zurück, der zufällig einen Geschlechtswert gleich F hat.

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

Gibt die fünf Datensätze in der Benutzertabelle/Sammlung zurück, nachdem die ersten fünf Datensätze übersprungen wurden.

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

Dies setzt das Alter aller Datensätze in der Benutzertabelle/Sammlung, die ein Alter von mehr als 25 haben, auf 26.

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

Dadurch wird das Alter aller Datensätze in der Benutzertabelle/Sammlung um 1 erhöht.

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

Dadurch wird das Alter des ersten Datensatzes in der Benutzertabelle/Sammlung um 1 verringert.

Um MySQL und/oder MongoDB zentral und von einem einzigen Punkt aus zu verwalten, besuchen Sie:https://severalnines.com/product/clustercontrol.