sql >> Database >  >> NoSQL >> MongoDB

MySQL naar MongoDB - Een cheatsheet voor beheerders

De meeste softwaretoepassingen bevatten tegenwoordig enige dynamische gegevensopslag voor uitgebreide toekomstige referentie in de toepassing zelf. We weten allemaal dat gegevens worden opgeslagen in een database die in twee categorieën valt, namelijk:relationele en niet-relationele DBMS.

Uw keuze uit deze twee hangt volledig af van uw gegevensstructuur, de hoeveelheid betrokken gegevens, databaseprestaties en schaalbaarheid.

Relationele DBMS slaan gegevens op in tabellen in termen van rijen, zodat ze Structured Querying Language (SQL) gebruiken, waardoor ze een goede keuze zijn voor toepassingen waarbij meerdere transacties betrokken zijn. Ze omvatten MySQL, SQLite en PostgreSQL.

Aan de andere kant zijn NoSQL DBMS zoals MongoDB documentgericht, zodat gegevens in collecties worden opgeslagen in termen van documenten. Dit geeft een grotere opslagcapaciteit voor een grote set gegevens en dus een verder voordeel in schaalbaarheid.

In deze blog gaan we ervan uit dat je een betere kennis hebt van MongoDB of MySQL en daarom graag de correlatie tussen de twee zou willen weten in termen van query's en databasestructuur.

Hieronder vindt u een spiekbriefje om uzelf verder vertrouwd te maken met het opvragen van MySQL naar MongoDB.

MySQL naar MongoDB Cheatsheet - Voorwaarden

MySQL-voorwaarden MongoDB-voorwaarden Uitleg
Tabel Collectie Dit is de opslagcontainer voor gegevens die meestal vergelijkbaar zijn in de ingesloten objecten.
Rij Document Definieert de entiteit met één object in de tabel voor MySQL en verzameling in het geval van MongoDB.
Kolom Veld Voor elk opgeslagen item heeft het eigenschappen die worden gedefinieerd door verschillende waarden en gegevenstypen. In MongoDB kunnen documenten in dezelfde collectie verschillende velden van elkaar hebben. In MySQL moet elke rij worden gedefinieerd met dezelfde kolommen als de bestaande.
Primaire sleutel Primaire sleutel Elk opgeslagen object wordt geïdentificeerd met een unieke veldwaarde. In het geval van MongoDB hebben we het _id-veld automatisch ingesteld, terwijl u in MySQL uw eigen primaire sleutel kunt definiëren die incrementeel is als u nieuwe rijen maakt.
Tabel-deelnames Documenten insluiten en linken Verbinding gekoppeld aan een object in een andere verzameling/tabel met gegevens in een andere verzameling/tabel.
waar $match Gegevens selecteren die voldoen aan criteria.
groep $group Gegevens groeperen volgens bepaalde criteria.
drop $unset Een kolom/veld verwijderen uit een rij/document/
set $set De waarde van een bestaande kolom/veld instellen op een nieuwe waarde.
Multiplenines Word een MongoDB DBA - MongoDB naar productie brengenLeer over wat u moet weten om MongoDB gratis te implementeren, bewaken, beheren en schalen

Schemaverklaringen

MySQL-tabelverklaringen MongoDB incassoverklaringen Uitleg

De database en tabellen worden expliciet gemaakt via het PHP-beheerderspaneel of gedefinieerd in een script, d.w.z.

Een database maken

CREATE DATABASE database_name

Een tafel maken

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

De database kan impliciet of expliciet worden aangemaakt. Impliciet tijdens het invoegen van het eerste document worden de database en verzameling aangemaakt en wordt er automatisch een _id-veld aan dit document toegevoegd.

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

U kunt de database ook expliciet maken door deze opmerking in de Mongo Shell uit te voeren

db.createCollection("users")

In MySQL moet u de kolommen specificeren in de tabel die u aan het maken bent, evenals enkele validatieregels instellen, zoals in dit voorbeeld het type gegevens en de lengte die naar een specifieke kolom gaan. In het geval van MongoDB is het geen must om noch de velden te definiëren die elk document zou moeten bevatten, noch de validatieregels die de gespecificeerde velden zouden moeten bevatten.

In MongoDB voor gegevensintegriteit en consistentie kunt u echter de validatieregels instellen met behulp van de JSON SCHEMA VALIDATOR

Een tafel laten vallen

DROP TABLE users
db.users.drop()

Dit zijn instructies voor het verwijderen van een tabel voor MySQL en verzameling in het geval van MongoDB.

Een nieuwe kolom toevoegen met de naam join_date

ALTER TABLE users ADD join_date DATETIME

De kolom join_date verwijderen als deze al is gedefinieerd

ALTER TABLE users DROP COLUMN join_date DATETIME

Een nieuw veld toevoegen met de naam join_date

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

Hiermee worden alle documenten in de collectie bijgewerkt zodat de datum van deelname de huidige datum is.

Het veld join_date verwijderen indien al gedefinieerd

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

Hiermee wordt het veld join_date verwijderd uit alle incassodocumenten.

De structuur van het schema wijzigen door een kolom/veld toe te voegen of weg te laten.

Aangezien de MongoDB-architectuur de documentstructuur niet strikt afdwingt, kunnen documenten velden hebben die van elkaar verschillen.

Een index maken met de kolom UserId oplopend en Leeftijd aflopend

CREATE INDEX idx_UserId_asc_Age_desc
ON users(UserId)

Een index maken met de velden UserId en Age.

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

Indexen worden over het algemeen gemaakt om het zoekproces te vergemakkelijken.

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

Nieuwe records invoegen.

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

Records verwijderen uit de tabel/verzameling waarvan de leeftijd gelijk is aan 25.

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

Alle records van de tafel/verzameling verwijderen.

SELECT * FROM users
db.users.find()

Retourneert alle records uit de gebruikerstabel/verzameling met alle kolommen/velden.

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

Retourneert alle records uit de gebruikerstabel/verzameling met Leeftijd, Geslacht en primaire sleutelkolommen/velden.

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

Retourneert alle records uit de gebruikerstabel/verzameling met kolommen/velden Leeftijd en Geslacht. De primaire sleutel is weggelaten.

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

Retourneert alle records uit de gebruikerstabel/verzameling waarvan de geslachtswaarde is ingesteld op M.

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

Retourneert alle records uit de gebruikerstabel/verzameling met alleen de geslachtswaarde maar waarvan de leeftijdswaarde gelijk is aan 25.

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

Retourneert alle records uit de gebruikerstabel/verzameling waarvan de geslachtswaarde is ingesteld op F en de leeftijd 25 is.

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

Retourneert alle records uit de gebruikerstabel/verzameling waarvan de Leeftijdswaarde niet gelijk is aan 25.

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

Retourneert alle records uit de gebruikerstabel/verzameling waarvan de geslachtswaarde is ingesteld op F of de leeftijd 25 is.

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

Retourneert alle records uit de gebruikerstabel/verzameling waarvan de Leeftijdswaarde groter is dan 25.

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

Retourneert alle records uit de gebruikerstabel/verzameling waarvan de Leeftijdswaarde kleiner is dan of gelijk is aan 25.

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

Retourneert alle records uit de gebruikerstabel/verzameling waarvan de naamwaarde toevallig He-letters heeft.

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

Retourneert alle records uit de gebruikerstabel/verzameling waarvan de geslachtswaarde is ingesteld op F en sorteert dit resultaat in oplopende volgorde van de id-kolom in het geval van MySQL en de tijd ingevoegd in het geval van MongoDB.

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

Retourneert alle records uit de gebruikerstabel/verzameling waarvan de geslachtswaarde is ingesteld op F en sorteert dit resultaat in de aflopende volgorde van de id-kolom in het geval van MySQL en de tijd ingevoegd in het geval van MongoDB.

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

of

db.users.find().count()

Telt alle records in de gebruikerstabel/verzameling.

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

of

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

Telt alle records in de gebruikerstabel/verzameling die toevallig een waarde hebben voor de eigenschap Name.

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

of

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

Retourneert het eerste record in de gebruikerstabel/verzameling.

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

Retourneert het eerste record in de gebruikerstabel/verzameling die toevallig een geslachtswaarde heeft die gelijk is aan F.

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

Retourneert de vijf records in de gebruikerstabel/verzameling na het overslaan van de eerste vijf records.

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

Dit stelt de leeftijd in van alle records in de gebruikerstabel/verzameling met een leeftijd tussen 25 en 26.

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

Dit verhoogt de leeftijd van alle records in de gebruikerstabel/verzameling met 1.

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

Dit verlaagt de leeftijd van het eerste record in de gebruikerstabel/verzameling met 1.

Om MySQL en/of MongoDB centraal en vanaf één punt te beheren, gaat u naar:https://severalnines.com/product/clustercontrol.


  1. Hoe bel je BGSAVE vanuit BookSleeve?

  2. Mongoose Schema is niet geregistreerd voor model

  3. Specifiek deel van document ophalen

  4. Dictionary<string, object>-naar-BsonDocument-conversie zonder _t-veld