sql >> Databasteknik >  >> NoSQL >> MongoDB

MySQL till MongoDB - Ett Admin-fuskblad

De flesta mjukvaruapplikationer innefattar nuförtiden viss dynamisk datalagring för omfattande framtida referens i själva applikationen. Vi vet alla att data lagras i en databas som delas in i två kategorier som är:Relationell och icke-relationell DBMS.

Ditt val av dessa två kommer helt att bero på din datastruktur, mängd data involverad, databasprestanda och skalbarhet.

Relationell DBMS lagrar data i tabeller i termer av rader så att de använder Structured Querying Language (SQL) vilket gör dem till ett bra val för applikationer som involverar flera transaktioner. De inkluderar MySQL, SQLite och PostgreSQL.

Å andra sidan är NoSQL DBMS som MongoDB dokumentorienterade så att data lagras i samlingar när det gäller dokument. Detta ger en större lagringskapacitet för en stor uppsättning data och därmed en ytterligare fördel i skalbarhet.

I den här bloggen antar vi att du har bättre kunskap om antingen MongoDB eller MySQL och därför skulle vilja veta korrelationen mellan de två när det gäller frågor och databasstruktur.

Nedan finns ett fuskblad för att ytterligare bekanta dig med frågan om MySQL till MongoDB.

MySQL till MongoDB Cheat Sheet - Villkor

MySQL-villkor MongoDB-villkor Förklaring
Tabell Samling Detta är lagringsbehållaren för data som tenderar att vara liknande i de inneslutna objekten.
Rad Dokument Definierar entitetsobjektet i tabellen för MySQL och samling i fallet MongoDB.
Kolumn Fält För varje lagrat objekt har det egenskaper som definieras av olika värden och datatyper. I MongoDB kan dokument i samma samling ha olika fält från varandra. I MySQL måste varje rad definieras med samma kolumner som de befintliga.
Primär nyckel Primär nyckel Varje lagrat objekt identifieras med ett unikt fältvärde när det gäller MongoDB. Vi har _id-fältet inställt automatiskt medan du i MySQL kan definiera din egen primärnyckel som är inkrementell när du skapar nya rader.
Bordanslutningar Bädda in och länka dokument Anslutning associerad med ett objekt i en annan samling/tabell till data i en annan samling/tabell.
var $match Välja data som matchar kriterier.
grupp $group Gruppera data enligt vissa kriterier.
släpp $unset Ta bort en kolumn/fält från en rad/dokument/
set $set Ställa in värdet för en befintlig kolumn/fält till ett nytt värde.
Severalnines Become a MongoDB DBA - Bringing MongoDB to ProductionLäs om vad du behöver veta för att distribuera, övervaka, hantera och skala MongoDBDownload gratis

Schemauttalanden

MySQL-tabellutlåtanden MongoDB Collection Statements Förklaring

Databasen och tabellerna skapas explicit via PHP-adminpanelen eller definieras i ett skript, dvs.

Skapa en databas

CREATE DATABASE database_name

Skapa en tabell

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 skapas implicit eller explicit. Implicit under den första dokumentinsättningen skapas databasen och samlingen samt ett automatiskt _id-fält läggs till i detta dokument.

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

Du kan också skapa databasen uttryckligen genom att köra den här kommentaren i Mongo Shell

db.createCollection("users")

I MySQL måste du ange kolumnerna i tabellen du skapar samt ställa in några valideringsregler som i det här exemplet vilken typ av data och längd som går till en specifik kolumn. När det gäller MongoDB är det inte ett måste att definiera varken fälten varje dokument ska innehålla eller valideringsreglerna som de angivna fälten ska innehålla.

Men i MongoDB för dataintegritet och konsistens kan du ställa in valideringsreglerna med JSON SCHEMA VALIDATOR

Släpp ett bord

DROP TABLE users
db.users.drop()

Detta är uttalanden för att ta bort en tabell för MySQL och samling i fallet MongoDB.

Lägger till en ny kolumn som heter join_date

ALTER TABLE users ADD join_date DATETIME

Tar bort kolumnen join_date om den redan har definierats

ALTER TABLE users DROP COLUMN join_date DATETIME

Lägger till ett nytt fält som heter join_date

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

Detta kommer att uppdatera alla dokument i samlingen så att anslutningsdatumet är aktuellt.

Ta bort join_date-fältet om det redan har definierats

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

Detta tar bort join_date-fältet från alla insamlingsdokument.

Ändra schemats struktur genom att antingen lägga till eller släppa en kolumn/fält.

Eftersom MongoDB-arkitekturen inte strikt tillämpar dokumentstrukturen, kan dokument ha fält som skiljer sig från varandra.

Skapa ett index med användar-ID-kolumnen stigande och ålder fallande

CREATE INDEX idx_UserId_asc_Age_desc
ON users(UserId)

Skapa ett index som involverar fälten UserId och Age.

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

Index skapas vanligtvis för att underlätta frågeprocessen.

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

Infogar nya poster.

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

Ta bort poster från tabellen/samlingen vars ålder är lika med 25.

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

Raderar alla poster från tabellen/samlingen.

SELECT * FROM users
db.users.find()

Returnerar alla poster från användartabellen/samlingen med alla kolumner/fält.

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

Returnerar alla poster från användartabellen/samlingen med kolumner/fält för ålder, kön och primärnyckel.

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

Returnerar alla poster från användartabellen/samlingen med kolumner/fält för ålder och kön. Den primära nyckeln utelämnas.

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

Returnerar alla poster från användartabellen/samlingen vars könsvärde är satt till M.

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

Returnerar alla poster från användartabellen/samlingen med endast Gender-värdet men vars åldersvärde är lika med 25.

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

Returnerar alla poster från användartabellen/samlingen vars könsvärde är satt till F och ålder är 25.

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

Returnerar alla poster från användartabellen/samlingen vars åldersvärde inte är lika med 25.

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

Returnerar alla poster från användartabellen/samlingen vars könsvärde är satt till F eller ålder är 25.

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

Returnerar alla poster från användartabellen/samlingen vars åldersvärde är större än 25.

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

Returnerar alla poster från användartabellen/samlingen vars åldersvärde är mindre än eller lika med 25.

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

Returnerar alla poster från användartabellen/samlingen vars namnvärde råkar ha He-bokstäver.

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

Returnerar alla poster från användartabellen/samlingen vars Gender-värde är satt till F och sorterar detta resultat i stigande ordning i id-kolumnen i fallet MySQL och tid infogat i fallet MongoDB.

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

Returnerar alla poster från användartabellen/samlingen vars Gender-värde är satt till F och sorterar detta resultat i fallande ordning för id-kolumnen i fallet MySQL och tid infogat i fallet MongoDB.

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

eller

db.users.find().count()

Räknar alla poster i användartabellen/samlingen.

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

eller

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

Räknar alla poster i användartabellen/samlingen som råkar ha ett värde för egenskapen Name.

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

eller

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

Returnerar den första posten i användartabellen/samlingen.

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

Returnerar den första posten i användartabellen/samlingen som råkar ha ett könsvärde lika med F.

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

Returnerar de fem posterna i användartabellen/samlingen efter att ha hoppat över de första fem posterna.

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

Detta ställer in åldern för alla poster i användartabellen/samlingen som har en ålder över 25 till 26.

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

Detta ökar åldern på alla poster i användartabellen/samlingen med 1.

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

Detta minskar åldern på den första posten i användartabellen/samlingen med 1.

För att hantera MySQL och/eller MongoDB centralt och från en enda punkt, besök:https://severalnines.com/product/clustercontrol.


  1. Stänger du av MongoDB-databasanslutningen på rätt sätt från C# 2.1-drivrutinen?

  2. Hur använder man redis 'DUMP' och 'RESTORE' (offline)?

  3. MongoDB kapslad arrayfråga

  4. De tre A:en för MongoDB Security – Autentisering, auktorisering och revision