Tìm hiểu MongoDB

1. Giới thiệu cơ bản về mongoDB###

MongoDB là một cơ sở dữ liệu mã nguồn mở được viết bằng C++ và là cơ sở dữ liệu NoSQL hàng đầu. Ngoài ra thì MongoDB còn là là một cơ sở dữ liệu đa nền tảng, hoạt động trên các khái niệm Collection và Document, nó cung cấp hiệu suất cao, tính khả dụng cao và khả năng mở rộng dễ dàng

2. Database trong MongoDB###

MongoDB Server có thể có nhiều database, mỗi database chứa các collection

3. Collection

Collection là một nhóm các Document trong MongoDB. Collection trong MongoDB tương đương với table sử dụng trong các hệ quản trị cơ sở dữ liệu SQL. Một Collection tồn tại bên trong một cơ sở dữ liệu duy nhất. Các Collection không có ràng buộc Relationship như các hệ quản trị cơ sở dữ liệu khác nên việc truy xuất rất nhanh.

4. Document

Document hay BSON document là một tập hợp chứa các cặp key-value, bên trong một Collection có thể có nhiều trường khác nhau. Document trong mongoDB tương đương với row trong các hệ quản trị cơ sở dữ liệu SQL. Trong một document chứa nhiều field tương đương với column trong các hệ quản trị cơ sở dữ liệu SQL.

Bảng dưới đây cho thấy sự tương đương trong mongoDB và các hệ quản trị cơ sở dữ liệu SQL

image .png

5. Create and Alter

Bảng dưới đây trình bày sự tương ứng giữa câu lệnh SQL và mongoDB

5.1. Create table

SQL Schema Statements

CREATE TABLE users (
    id MEDIUMINT NOT NULL
        AUTO_INCREMENT,
    user_id Varchar(30),
    age Number,
    status char(1),
    PRIMARY KEY (id)
)

MongoDB Schema Statements Collection hoàn toàn được tạo khi thực hiện insert() lần đầu tiên. Khóa chính được tự động thêm nếu _id field không được xác định.

db.users.insert( {
    user_id: "abc123",
    age: 55,
    status: "A"
 } )

Tuy nhiên bạn cũng có thể tạo một collection

db.createCollection("users")

5.2 Alter table

SQL statement

ALTER TABLE users
ADD join_date DATETIME

MongoDB

Sử dụng $set operator để add field đã tồn tại trong document

db.users.update(
    { },
    { $set: { join_date: new Date() } },
    { multi: true }
)

Sử dụng $unset operator để xóa field đã tồn tại trong document

db.users.update(
    { },
    { $unset: { join_date: "" } },
    { multi: true }
)

5.3.Insert

Sự tương tứng giữa SQL và mongoDB khi Insert record

SQL INSERT Statements

INSERT INTO users(user_id,
                  age,
                  status)
VALUES ("bcd001",
        45,
        "A")

MongoDB insert() Statements

db.users.insert(
   { user_id: "bcd001", age: 45, status: "A" }
)

5.4. Select

Sự tương tứng giữa SQL và mongoDB khi select

Ví dụ 1

SQL SELECT Statements và MongoDB find() Statements

SELECT *                                   db.users.find()
FROM users
db.users.find()

Ví dụ 2

--SQL statement
SELECT id,
       user_id,
       status
FROM users

--MongoDB find () statement
db.users.find(
    { },
    { user_id: 1, status: 1 }
)

Ví dụ 3

--SQL SELECT Statements
SELECT user_id, status
FROM users

--MongoDB find() Statements
db.users.find(
    { },
    { user_id: 1, status: 1, _id: 0 }
)

Ví dụ 4

--SQL SELECT Statements
SELECT *
FROM users
WHERE status = "A"

--MongoDB find() Statements
db.users.find(
    { status: "A" }
)

Ví dụ 5

--SQL SELECT Statements
SELECT user_id, status
FROM users
WHERE status = "A"

--MongoDB find() Statements
db.users.find(
    { status: "A" },
    { user_id: 1, status: 1, _id: 0 }
)

Ví dụ 6

--SQL SELECT Statements
SELECT *
FROM users
WHERE status != "A"

--MongoDB find() Statements
db.users.find(
    { status: { $ne: "A" } }
)

Ví dụ 7

--SQL SELECT Statements
SELECT *
FROM users
WHERE status = "A"
AND age = 50

--MongoDB find() Statements
db.users.find(
    { status: "A",
      age: 50 }
)

Ví dụ 8

--SQL SELECT Statements
SELECT *
FROM users
WHERE status = "A"
OR age = 50

--MongoDB find() Statements
db.users.find(
    { $or: [ { status: "A" } ,
             { age: 50 } ] }
)

Ví dụ 9

--SQL SELECT Statements
SELECT *
FROM users
WHERE age > 25

--MongoDB find() Statements
db.users.find(
    { age: { $gt: 25 } }
)

Ví dụ 10

--SQL SELECT Statements
SELECT *
FROM users
WHERE age < 25

--MongoDB find() Statements
db.users.find(
   { age: { $lt: 25 } }
)

Ví dụ 11

--SQL SELECT Statements
SELECT *
FROM users
WHERE age > 25
AND   age <= 50

--MongoDB find() Statements
db.users.find(
   { age: { $gt: 25, $lte: 50 } }
)

Ví dụ 12

--SQL SELECT Statements
SELECT *
FROM users
WHERE user_id like "%bc%"

--MongoDB find() Statements
db.users.find( { user_id: /bc/ } )

Ví dụ 13

--SQL SELECT Statements
SELECT *
FROM users
WHERE user_id like "bc%"

----MongoDB find() Statements
db.users.find( { user_id: /^bc/ } )

Ví dụ 14

--SQL SELECT Statements
SELECT *
FROM users
WHERE status = "A"
ORDER BY user_id ASC

----MongoDB find() Statements
db.users.find( { status: "A" } ).sort( { user_id: 1 } )

Ví dụ 15

--SQL SELECT Statements
SELECT *
FROM users
WHERE status = "A"
ORDER BY user_id DESC

----MongoDB find() Statements
db.users.find( { status: "A" } ).sort( { user_id: -1 } )

Ví dụ 16

--SQL SELECT Statements
SELECT COUNT(*)
FROM users

----MongoDB find() Statements
db.users.count()
or

db.users.find().count()

Ví dụ 17

--SQL SELECT Statements
SELECT COUNT(user_id)
FROM users

----MongoDB find() Statements
db.users.count( { user_id: { $exists: true } } )
or

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

Ví dụ 18

--SQL SELECT Statements
SELECT COUNT(*)
FROM users
WHERE age > 30

----MongoDB find() Statements
db.users.count( { age: { $gt: 30 } } )
or

db.users.find( { age: { $gt: 30 } } ).count()

Ví dụ 19

--SQL SELECT Statements
SELECT DISTINCT(status)
FROM users

----MongoDB find() Statements
db.users.distinct( "status" )

Ví dụ 20

--SQL SELECT Statements
SELECT *
FROM users
LIMIT 1

----MongoDB find() Statements
db.users.findOne()
or

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

Ví dụ 21

--SQL SELECT Statements
SELECT *
FROM users
LIMIT 5
SKIP 10

----MongoDB find() Statements
db.users.find().limit(5).skip(10)

Ví dụ 22

--SQL SELECT Statements
EXPLAIN SELECT *
FROM users
WHERE status = "A"

----MongoDB find() Statements
db.users.find( { status: "A" } ).explain()

5.5.Update Records

Câu lệnh sau đây tương ứng giữa SQL và mongoDB

Ví dụ 1

--SQL Update Statements
UPDATE users
SET status = "C"
WHERE age > 25

----MongoDB update() Statements
db.users.update(
   { age: { $gt: 25 } },
   { $set: { status: "C" } },
   { multi: true }
)

Ví dụ 2

--SQL Update Statements
UPDATE users
SET age = age + 3
WHERE status = "A"

----MongoDB update() Statements
db.users.update(
   { status: "A" } ,
   { $inc: { age: 3 } },
   { multi: true }
)

5.6 Delete record

Câu lệnh sau đây tương ứng giữa SQL và mongoDB

Ví dụ 1

--SQL Delete Statements
DELETE FROM users
WHERE status = "D"

----MongoDB remove() Statements
db.users.remove( { status: "D" } )
DELETE FROM users
db.users.remove({})

Ví dụ 2

--SQL Delete Statements
DELETE FROM users

----MongoDB remove() Statements
db.users.remove({})

Nguồn tham khảo http://www.tutorialspoint.com/mongodb/

https://docs.mongodb.com/manual/reference/sql-comparison/


All Rights Reserved