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

MySQL til MongoDB - Et Admin-snydeark

De fleste softwareapplikationer involverer i dag en vis dynamisk datalagring til omfattende fremtidig reference i selve applikationen. Vi ved alle, at data er lagret i en database, som falder i to kategorier, som er:Relationel og ikke-relationel DBMS.

Dit valg af udvælgelse af disse to vil helt afhænge af din datastruktur, mængden af ​​involveret data, databasens ydeevne og skalerbarhed.

Relationelle DBMS gemmer data i tabeller i form af rækker, således at de bruger Structured Querying Language (SQL), hvilket gør dem til et godt valg til applikationer, der involverer flere transaktioner. De inkluderer MySQL, SQLite og PostgreSQL.

På den anden side er NoSQL DBMS såsom MongoDB dokumentorienteret, således at data gemmes i samlinger med hensyn til dokumenter. Dette giver en større lagerkapacitet for et stort sæt data og dermed en yderligere fordel i skalerbarhed.

I denne blog antager vi, at du har en bedre viden om enten MongoDB eller MySQL og derfor gerne vil kende sammenhængen mellem de to med hensyn til forespørgsler og databasestruktur.

Nedenfor er et snydeark for yderligere at blive fortrolig med forespørgslen fra MySQL til MongoDB.

MySQL til MongoDB Snydeark - Vilkår

MySQL-vilkår MongoDB-vilkår Forklaring
Tabel Samling Dette er lagerbeholderen til data, der har tendens til at være ens i de indeholdte objekter.
Række Dokument Definerer den enkelte objekt-entitet i tabellen for MySQL og samling i tilfælde af MongoDB.
Kolonne Felt For hvert lagret element har det egenskaber, som er defineret af forskellige værdier og datatyper. I MongoDB kan dokumenter i samme samling have forskellige felter fra hinanden. I MySQL skal hver række defineres med de samme kolonner fra de eksisterende.
Primær nøgle Primær nøgle Hvert lagret objekt er identificeret med en unik feltværdi i tilfælde af MongoDB, vi har _id-felt indstillet automatisk, mens du i MySQL kan definere din egen primære nøgle, som er inkrementel, når du opretter nye rækker.
Tabelforbindelser Indlejring og sammenkædning af dokumenter Forbindelse knyttet til et objekt i en anden samling/tabel til data i en anden samling/tabel.
hvor $match Valg af data, der matcher kriterier.
gruppe $group Grupper data i henhold til nogle kriterier.
slip $unset Fjernelse af en kolonne/felt fra en række/dokument/
sæt $set Indstilling af værdien af ​​en eksisterende kolonne/felt til en ny værdi.
Severalnines Bliv en MongoDB DBA - Bring MongoDB to ProductionLær om, hvad du skal vide for at implementere, overvåge, administrere og skalere MongoDBDownload gratis

Skemaerklæringer

MySQL-tabelerklæringer MongoDB-indsamlingserklæringer Forklaring

Databasen og tabellerne oprettes eksplicit gennem PHP-adminpanelet eller defineret i et script, dvs.

Oprettelse af en database

CREATE DATABASE database_name

Oprettelse af en tabel

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

Databasen kan oprettes implicit eller eksplicit. Implicit under den første dokumentindsættelse oprettes databasen og samlingen, ligesom der tilføjes et automatisk _id-felt til dette dokument.

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

Du kan også oprette databasen eksplicit ved at køre denne kommentar i Mongo Shell

db.createCollection("users")

I MySQL skal du angive kolonnerne i den tabel, du opretter, samt angive nogle valideringsregler som i dette eksempel typen af ​​data og længden, der går til en specifik kolonne. I tilfælde af MongoDB er det ikke et must at definere hverken de felter, hvert dokument skal indeholde, eller de valideringsregler, de angivne felter skal indeholde.

Men i MongoDB for dataintegritet og konsistens kan du indstille valideringsreglerne ved hjælp af JSON SCHEMA VALIDATOR

Dropper et bord

DROP TABLE users
db.users.drop()

Dette er sætninger til sletning af en tabel til MySQL og samling i tilfælde af MongoDB.

Tilføjelse af en ny kolonne kaldet join_date

ALTER TABLE users ADD join_date DATETIME

Fjerner kolonnen join_date, hvis den allerede er defineret

ALTER TABLE users DROP COLUMN join_date DATETIME

Tilføjelse af et nyt felt kaldet join_date

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

Dette vil opdatere alle dokumenter i samlingen, så tilslutningsdatoen er den aktuelle dato.

Fjernelse af join_date-feltet, hvis det allerede er defineret

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

Dette vil fjerne join_date-feltet fra alle indsamlingsdokumenter.

Ændring af skemaets struktur ved enten at tilføje eller slette en kolonne/felt.

Da MongoDB-arkitekturen ikke strengt håndhæver dokumentstrukturen, kan dokumenter have felter, der er forskellige fra hinanden.

Oprettelse af et indeks med UserId-kolonnen stigende og Alder faldende

CREATE INDEX idx_UserId_asc_Age_desc
ON users(UserId)

Oprettelse af et indeks, der involverer felterne UserId og Age.

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

Indeks oprettes generelt for at lette forespørgselsprocessen.

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

Indsætter nye poster.

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

Sletning af poster fra bordet/samlingen, hvis alder er lig med 25.

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

Sletning af alle poster fra tabellen/samlingen.

SELECT * FROM users
db.users.find()

Returnerer alle poster fra brugertabellen/samlingen med alle kolonner/felter.

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

Returnerer alle poster fra brugertabellen/samlingen med Alder, Køn og primære nøglekolonner/felter.

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

Returnerer alle poster fra brugertabellen/samlingen med kolonner/felter for alder og køn. Den primære nøgle er udeladt.

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

Returnerer alle poster fra brugertabellen/samlingen, hvis kønsværdi er sat til M.

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

Returnerer alle poster fra brugertabellen/samlingen med kun kønsværdien, men hvis aldersværdi er lig med 25.

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

Returnerer alle poster fra brugertabellen/samlingen, hvis kønsværdi er sat til F og alder er 25.

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

Returnerer alle poster fra brugertabellen/samlingen, hvis aldersværdi ikke er lig med 25.

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

Returnerer alle poster fra brugertabellen/samlingen, hvis kønsværdi er sat til F eller alder er 25.

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

Returnerer alle poster fra brugertabellen/samlingen, hvis aldersværdi er større end 25.

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

Returnerer alle poster fra brugertabellen/samlingen, hvis aldersværdi er mindre end eller lig med 25.

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

Returnerer alle poster fra brugertabellen/samlingen, hvis navneværdi tilfældigvis har He-bogstaver.

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

Returnerer alle poster fra brugertabellen/samlingen, hvis kønsværdi er sat til F og sorterer dette resultat i stigende rækkefølge af id-kolonnen i tilfælde af MySQL og tid indsat i tilfælde af MongoDB.

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

Returnerer alle poster fra brugertabellen/samlingen, hvis kønsværdi er sat til F og sorterer dette resultat i faldende rækkefølge af id-kolonnen i tilfælde af MySQL og tid indsat i tilfælde af MongoDB.

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

eller

db.users.find().count()

Tæller alle poster i brugertabellen/samlingen.

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

eller

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

Tæller alle poster i brugertabellen/samlingen, som tilfældigvis har en værdi for egenskaben Navn.

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

eller

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

Returnerer den første post i brugertabellen/samlingen.

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

Returnerer den første post i brugertabellen/samlingen, der tilfældigvis har kønsværdi lig med F.

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

Returnerer de fem poster i brugertabellen/samlingen efter at have sprunget de første fem poster over.

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

Dette indstiller alderen for alle poster i brugertabellen/samlingen, som har en alder på over 25 til 26.

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

Dette øger alderen på alle poster i brugertabellen/samlingen med 1.

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

Dette reducerer alderen på den første post i brugertabellen/samlingen med 1.

For at administrere MySQL og/eller MongoDB centralt og fra et enkelt punkt, besøg:https://severalnines.com/product/clustercontrol.


  1. Bestemmelse af den bedste arkitektur for en MongoDB-klyngeimplementering

  2. Python redis subscribe kan ikke få alle data?

  3. Er det OK at forespørge en MongoDB flere gange pr. anmodning?

  4. MongoDB tælle kommando