MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

MySQL to MongoDB — ściągawka administratora

Większość aplikacji w dzisiejszych czasach wymaga dynamicznego przechowywania danych do obszernego wykorzystania w przyszłości w samej aplikacji. Wszyscy wiemy, że dane są przechowywane w bazie danych, która dzieli się na dwie kategorie:relacyjny i nierelacyjny DBMS.

Wybór spośród tych dwóch będzie w pełni zależał od struktury danych, ilości danych, wydajności bazy danych i skalowalności.

Relacyjne DBMS przechowują dane w tabelach w postaci wierszy, tak aby korzystały ze strukturalnego języka zapytań (SQL), co czyni je dobrym wyborem dla aplikacji obejmujących kilka transakcji. Obejmują one MySQL, SQLite i PostgreSQL.

Z drugiej strony, bazy danych NoSQL, takie jak MongoDB, są zorientowane na dokumenty, tak że dane są przechowywane w zbiorach w postaci dokumentów. Daje to większą pojemność dla dużego zestawu danych, co stanowi kolejną zaletę skalowalności.

Na tym blogu zakładamy, że masz lepszą wiedzę na temat MongoDB lub MySQL i dlatego chciałbyś poznać korelację między nimi pod względem zapytań i struktury bazy danych.

Poniżej znajduje się ściągawka, aby lepiej zapoznać się z wysyłaniem zapytań MySQL do MongoDB.

Ściągawka z MySQL do MongoDB — Warunki

Warunki MySQL Warunki MongoDB Wyjaśnienie
Stół Kolekcja To jest kontener do przechowywania danych, które zwykle są podobne w zawartych obiektach.
Wiersz Dokument Definiuje pojedynczy obiekt w tabeli dla MySQL i kolekcji w przypadku MongoDB.
Kolumna Pole Każdy przechowywany element ma właściwości, które są definiowane przez różne wartości i typy danych. W MongoDB dokumenty z tej samej kolekcji mogą mieć różne pola. W MySQL każdy wiersz musi być zdefiniowany tymi samymi kolumnami, co już istniejące.
Klucz podstawowy Klucz główny Każdy przechowywany obiekt jest identyfikowany za pomocą unikalnej wartości pola, w przypadku MongoDB mamy ustawione pole _id automatycznie, podczas gdy w MySQL możesz zdefiniować swój własny klucz podstawowy, który jest przyrostowy podczas tworzenia nowych wierszy.
Połączenia tabel Osadzanie i łączenie dokumentów Połączenie skojarzone z obiektem w innej kolekcji/tabeli z danymi w innej kolekcji/tabeli.
gdzie $match Wybieranie danych spełniających kryteria.
grupa $grupa Grupowanie danych według pewnych kryteriów.
upuść $unset Usuwanie kolumny/pola z wiersza/dokumentu/
ustaw $set Ustawianie wartości istniejącej kolumny/pola na nową wartość.
Kilkadziesiąt — Zostań administratorem baz danych MongoDB — wprowadzenie MongoDB do produkcjiDowiedz się, co trzeba wiedzieć, aby wdrażać, monitorować, zarządzać i skalować MongoDB. Pobierz za darmo

Oświadczenia schematu

Oświadczenia tabeli MySQL Wyciągi dotyczące kolekcji MongoDB Wyjaśnienie

Baza danych i tabele są tworzone bezpośrednio przez panel administracyjny PHP lub zdefiniowane w skrypcie, np.

Tworzenie bazy danych

CREATE DATABASE database_name

Tworzenie tabeli

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

Baza danych może być utworzona niejawnie lub jawnie. Niejawnie podczas pierwszego wstawiania dokumentu tworzona jest baza danych i kolekcja, a także automatyczne pole _id dodawane do tego dokumentu.

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

Możesz również utworzyć bazę danych bezpośrednio, uruchamiając ten komentarz w Mongo Shell

db.createCollection("users")

W MySQL musisz określić kolumny w tworzonej tabeli, a także ustawić pewne reguły walidacji, takie jak w tym przykładzie typ danych i długość, które trafiają do określonej kolumny. W przypadku MongoDB nie jest konieczne definiowanie pól, które powinien zawierać każdy dokument, ani zasad walidacji, które powinny zawierać określone pola.

Jednak w MongoDB w celu zapewnienia integralności i spójności danych można ustawić reguły walidacji za pomocą WALIDATORA SCHEMATU JSON

Upuszczanie stołu

DROP TABLE users
db.users.drop()

To są instrukcje usuwania tabeli dla MySQL i kolekcji w przypadku MongoDB.

Dodanie nowej kolumny o nazwie join_date

ALTER TABLE users ADD join_date DATETIME

Usuwanie kolumny join_date, jeśli jest już zdefiniowana

ALTER TABLE users DROP COLUMN join_date DATETIME

Dodanie nowego pola o nazwie join_date

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

Spowoduje to zaktualizowanie wszystkich dokumentów w kolekcji, tak aby data dołączenia była datą bieżącą.

Usunięcie pola daty dołączenia, jeśli zostało już zdefiniowane

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

Spowoduje to usunięcie pola data_połączenia ze wszystkich dokumentów kolekcji.

Zmienianie struktury schematu przez dodanie lub upuszczenie kolumny/pola.

Ponieważ architektura MongoDB nie narzuca ściśle struktury dokumentu, dokumenty mogą mieć różne pola.

Tworzenie indeksu z kolumną UserId rosnąco i Age malejąco

CREATE INDEX idx_UserId_asc_Age_desc
ON users(UserId)

Tworzenie indeksu obejmującego pola UserId i Age.

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

Indeksy są zazwyczaj tworzone w celu ułatwienia procesu zapytania.

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

Wstawianie nowych rekordów.

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

Usuwanie rekordów z tabeli/kolekcji w wieku 25 lat.

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

Usuwanie wszystkich rekordów z tabeli/kolekcji.

SELECT * FROM users
db.users.find()

Zwraca wszystkie rekordy z tabeli/kolekcji użytkowników ze wszystkimi kolumnami/polami.

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

Zwraca wszystkie rekordy z tabeli/kolekcji użytkowników z kolumnami/polami/polami dotyczącymi wieku, płci i klucza podstawowego.

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

Zwraca wszystkie rekordy z tabeli/kolekcji użytkowników z kolumnami/polami Wiek i Płeć. Klucz podstawowy jest pominięty.

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

Zwraca wszystkie rekordy z tabeli/kolekcji użytkowników, których wartość Płeć jest ustawiona na M.

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

Zwraca wszystkie rekordy z tabeli/kolekcji użytkowników tylko z wartością Płeć, ale której wartość Wiek jest równa 25.

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

Zwraca wszystkie rekordy z tabeli/kolekcji użytkowników, których wartość Płeć jest ustawiona na F, a Wiek to 25.

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

Zwraca wszystkie rekordy z tabeli/kolekcji użytkowników, których wartość Wiek nie jest równa 25.

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

Zwraca wszystkie rekordy z tabeli/kolekcji użytkowników, których wartość Płeć jest ustawiona na F lub Wiek to 25.

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

Zwraca wszystkie rekordy z tabeli/kolekcji użytkowników, których wartość Wiek jest większa niż 25.

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

Zwraca wszystkie rekordy z tabeli/kolekcji użytkowników, których wartość Wiek jest mniejsza lub równa 25.

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

Zwraca wszystkie rekordy z tabeli/kolekcji użytkowników, których wartość Name zawiera litery He.

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

Zwraca wszystkie rekordy z tabeli/kolekcji użytkowników, których wartość Gender jest ustawiona na F i sortuje ten wynik w porządku rosnącym kolumny id w przypadku MySQL i czasu wstawionego w przypadku MongoDB.

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

Zwraca wszystkie rekordy z tabeli/kolekcji użytkowników, których wartość Gender jest ustawiona na F, i sortuje ten wynik w kolejności malejącej kolumny id w przypadku MySQL i czasu wstawionego w przypadku MongoDB.

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

lub

db.users.find().count()

Zlicza wszystkie rekordy w tabeli/kolekcji użytkowników.

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

lub

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

Zlicza wszystkie rekordy w tabeli/kolekcji użytkowników, które mają wartość właściwości Nazwa.

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

lub

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

Zwraca pierwszy rekord w tabeli/kolekcji użytkowników.

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

Zwraca pierwszy rekord w tabeli/kolekcji użytkowników, który ma wartość Płeć równą F.

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

Zwraca pięć rekordów w tabeli/kolekcji użytkowników po pominięciu pierwszych pięciu rekordów.

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

To ustawia wiek wszystkich rekordów w tabeli/kolekcji użytkowników, którzy mają wiek od 25 do 26 lat.

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

Zwiększa to wiek wszystkich rekordów w tabeli/kolekcji użytkowników o 1.

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

Powoduje to zmniejszenie wieku pierwszego rekordu w tabeli/kolekcji użytkowników o 1.

Aby centralnie i z jednego miejsca zarządzać MySQL i/lub MongoDB, odwiedź:https://severalnines.com/product/clustercontrol.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongo:zwrot nie jest równy count()

  2. $pull . MongoDB

  3. Węzeł + Mongusta:Czy pobrano ostatnio wstawiony identyfikator?

  4. Jak połączyć się z mongodb za pomocą node.js (i uwierzytelnić)?

  5. MongoDB, wykonanie zapytania za pomocą wyrażenia regularnego na polach indeksowanych