MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MySQL към MongoDB - Admin Cheat Sheet

Повечето софтуерни приложения в днешно време включват някакво динамично съхранение на данни за обширна бъдеща справка в самото приложение. Всички знаем, че данните се съхраняват в база данни, която попада в две категории, които са:релационни и нерелационни СУБД.

Изборът ви на избор от тези две ще зависи изцяло от вашата структура на данните, количеството на включените данни, производителността на базата данни и мащабируемостта.

Релационните СУБД съхраняват данни в таблици по отношение на редове, така че да използват Structured Querying Language (SQL), което ги прави добър избор за приложения, включващи няколко транзакции. Те включват MySQL, SQLite и PostgreSQL.

От друга страна, NoSQL СУБД като MongoDB са ориентирани към документи, така че данните се съхраняват в колекции по отношение на документи. Това дава по-голям капацитет за съхранение на голям набор от данни, следователно допълнително предимство в мащабируемостта.

В този блог предполагаме, че имате по-добри познания за MongoDB или MySQL и следователно бихте искали да знаете връзката между двете по отношение на заявките и структурата на базата данни.

По-долу е дадена таблица за мами, за да се запознаете допълнително със заявките на MySQL към MongoDB.

Чайт лист от MySQL към MongoDB - Условия

Условия на MySQL Условия на MongoDB Обяснение
Таблица Колекция Това е контейнерът за съхранение на данни, които обикновено са подобни в съдържащите се обекти.
Ред Документ Дефинира единичния обект в таблицата за MySQL и колекция в случая на MongoDB.
Колона Поле За всеки съхранен елемент той има свойства, които са дефинирани от различни стойности и типове данни. В MongoDB документите в една и съща колекция може да имат различни полета едно от друго. В MySQL всеки ред трябва да бъде дефиниран със същите колони от съществуващите.
Първичен ключ Първичен ключ Всеки съхранен обект се идентифицира с уникална стойност на полето в случая на MongoDB ние имаме поле _id, зададено автоматично, докато в MySQL можете да дефинирате свой собствен първичен ключ, който се увеличава, докато създавате нови редове.
Съединения на таблици Вграждане и свързване на документи Връзка, свързана с обект в различна колекция/таблица с данни в друга колекция/таблица.
къде $match Избиране на данни, които отговарят на критериите.
група $group Групиране на данни според някои критерии.
отпуснете $unset Премахване на колона/поле от ред/документ/
настройка $set Задаване на стойността на съществуваща колона/поле на нова стойност.
Severalnines Станете DBA на MongoDB – Пренасяне на MongoDB в Производството Научете какво трябва да знаете, за да внедрите, наблюдавате, управлявате и мащабирате MongoDB Изтеглете безплатно

Изявления за схема

Изявления на MySQL таблица Изявления за събиране на MongoDB Обяснение

Базата данни и таблиците се създават изрично чрез администраторския панел на PHP или се дефинират в рамките на скрипт, т.е.

Създаване на база данни

CREATE DATABASE database_name

Създаване на таблица

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

Базата данни може да бъде създадена имплицитно или изрично. Неявно по време на първото вмъкване на документ базата данни и колекцията се създават, както и автоматично поле _id, което се добавя към този документ.

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

Можете също да създадете базата данни изрично, като стартирате този коментар в Mongo Shell

db.createCollection("users")

В MySQL трябва да посочите колоните в таблицата, която създавате, както и да зададете някои правила за валидиране, като в този пример типа данни и дължината, които отиват към конкретна колона. В случая на MongoDB не е задължително да се дефинират нито полетата, които всеки документ трябва да съдържа, нито правилата за валидиране, които посочените полета трябва да съдържат.

Въпреки това, в MongoDB за целостта и последователността на данните можете да зададете правилата за валидиране с помощта на JSON SCHEMA VALIDATOR

Изпускане на маса

DROP TABLE users
db.users.drop()

Това са изрази за изтриване на таблица за MySQL и колекция в случая на MongoDB.

Добавяне на нова колона, наречена join_date

ALTER TABLE users ADD join_date DATETIME

Премахване на колоната join_date, ако вече е дефинирана

ALTER TABLE users DROP COLUMN join_date DATETIME

Добавяне на ново поле, наречено join_date

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

Това ще актуализира всички документи в колекцията, за да имат датата на присъединяване като текуща дата.

Премахване на полето join_date, ако вече е дефинирано

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

Това ще премахне полето join_date от всички документи за събиране.

Промяна на структурата на схемата чрез добавяне или пускане на колона/поле.

Тъй като архитектурата MongoDB не налага стриктно на структурата на документа, документите може да имат полета, различни едно от друго.

Създаване на индекс с нарастваща колона UserId и низходяща възраст

CREATE INDEX idx_UserId_asc_Age_desc
ON users(UserId)

Създаване на индекс, включващ полетата UserId и Age.

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

Индексите обикновено се създават, за да улеснят процеса на заявка.

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

Вмъкване на нови записи.

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

Изтриване на записи от таблицата/колекцията, чиято възраст е равна на 25.

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

Изтриване на всички записи от таблицата/колекцията.

SELECT * FROM users
db.users.find()

Връща всички записи от таблицата/колекцията на потребителите с всички колони/полета.

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

Връща всички записи от таблицата/колекцията на потребителите с колони/полета за възраст, пол и първичен ключ.

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

Връща всички записи от таблицата/колекцията на потребителите с колони/полета за възраст и пол. Първичният ключ е пропуснат.

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

Връща всички записи от таблицата/колекцията на потребителите, чиято стойност за пол е зададена на M.

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

Връща всички записи от таблицата/колекцията на потребителите само със стойността за пол, но чиято стойност за възраст е равна на 25.

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

Връща всички записи от таблицата/колекцията на потребителите, чиято стойност за пол е зададена на F и възраст е 25.

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

Връща всички записи от таблицата/колекцията на потребителите, чиято стойност за възраст не е равна на 25.

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

Връща всички записи от таблицата/колекцията на потребителите, чиято стойност за пол е зададена на F или възраст е 25.

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

Връща всички записи от таблицата/колекцията на потребителите, чиято стойност за възраст е по-голяма от 25.

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

Връща всички записи от таблицата/колекцията на потребителите, чиято стойност за възраст е по-малка или равна на 25.

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

Връща всички записи от таблицата/колекцията на потребителите, чиято стойност на Име има букви He.

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

Връща всички записи от таблицата/колекцията на потребителите, чиято стойност за пол е зададена на F и сортира този резултат във възходящ ред на колоната id в случай на MySQL и време, вмъкнато в случай на MongoDB.

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

Връща всички записи от таблицата/колекцията на потребителите, чиято стойност за пол е зададена на F и сортира този резултат в низходящ ред на колоната id в случай на MySQL и време, вмъкнато в случай на MongoDB.

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

или

db.users.find().count()

Преброява всички записи в таблицата/колекцията на потребителите.

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

или

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

Преброява всички записи в таблицата/колекцията на потребителите, които случайно имат стойност за свойството Name.

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

или

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

Връща първия запис в таблицата/колекцията на потребителите.

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

Връща първия запис в таблицата/колекцията на потребителите, който случайно има стойност на пола, равна на F.

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

Връща петте записа в таблицата/колекцията на потребителите след пропускане на първите пет записа.

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

Това задава възрастта на всички записи в таблицата/колекцията с потребители, които имат възраст над 25 до 26 години.

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

Това увеличава възрастта на всички записи в таблицата/колекцията на потребителите с 1.

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

Това намалява възрастта на първия запис в таблицата/колекцията на потребителите с 1.

За да управлявате MySQL и/или MongoDB централизирано и от една точка, посетете:https://severalnines.com/product/clustercontrol.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Безплатно внедряване и наблюдение на база данни с отворен код с ClusterControl Community Edition

  2. Как да импортирам данни от mongodb в pandas?

  3. MongoDB отделна команда

  4. Защита на базата данни 101:Разбиране на привилегиите за достъп до база данни

  5. Как мога да създам индекс с pymongo