Tìm hiểu MongoDB
Bài đăng này đã không được cập nhật trong 3 năm
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
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/
All rights reserved