Tải bản đầy đủ (.docx) (34 trang)

MÔN HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU ĐỀ TÀI TÌM HIỂU HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU MONGODB

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.74 MB, 34 trang )

TRƯỜNG ĐẠI HỌC NGÂN HÀNG TP. HỒ CHÍ MINH

MƠN: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU
ĐỀ TÀI: TÌM HIỂU HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU MONGODB
Giảng viên hướng dẫn: Nguyễn Văn Kiên
Lớp: ITS322_221_1_D01
Nhóm gồm các sinh viên:
Nguyễn Hồng Hải – 030237210067
Lê Văn Học - 030237210081.
Nguyễn Ngọc Gia Huy - 030237210086.
Võ Ngọc Sơn - 030237210162.
Nguyễn Thành Tiến – 030237210185.
Nguyễn Đức Trung - 030237210199.
Triệu Tuấn Vĩ – 030237210212.
TP HỒ CHÍ MINH, 26 THÁNG 10 NĂM 2022


MỤC LỤC
I. TÌM HIỂU VỀ CƠ SỞ DỮ LIỆU NOSQL, HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU MONGODB VÀ CÁC
KHÁI NIỆM CƠ BẢ
..................................................................................................................................................................... 3
1. Cơ sở dữ liệu NOSQL..........................................................................................................................3
2.Hệ quản trị cơ sở dữ liệu MongoDB.........................................................................................................5
3. Các khái niệm cơ bản trong MongoDB.................................................................................................6
II. THỰC HIỆN TẠO CƠ SỞ DỮ LIỆU VÀ THỰC HIỆN CÁC THAO TÁC..........................................7
1. Tạo cơ sở dữ liệu...................................................................................................................................12
2.Một số thao tác khác...............................................................................................................................13
III. TÌM HIỂU VỀ CÁC TỐN TỬ SO SÁNH SỬ DỤNG TRONG CÂU TRUY VẤN.......................19
IV. TÌM HIỂU CÁCH TRUY VẤN DOCUMENT LỒNG NHAU..........................................................21
V.TÌM HIỂU VỀ PHƯƠNG THỨC AGGREGATE VÀ CÁC TOÁN TỬ TRONG AGGREGATION
PIPELINE..................................................................................................................................................27


VI. THỰC HIỆN SAO LƯU VÀ PHỤC HỒI DỮ LIỆU..........................................................................31
VII. SỬ DỤNG CƠ SỞ DỮ LIỆU SINHVIEN VÀ THỰC HIỆN MỘT SỐ CÂU TRUY VẤN..................
DANH MỤC TÀI LIỆU THAM KHẢO...................................................................................................17

Trang 2


I. TÌM HIỂU VỀ CƠ SỞ DỮ LIỆU NOSQL, HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU U VỀ CƠ SỞ DỮ LIỆU NOSQL, HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU CƠ SỞ DỮ LIỆU NOSQL, HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU SỞ DỮ LIỆU NOSQL, HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU DỮ LIỆU NOSQL, HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU LIỆU NOSQL, HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU U NOSQL, HỆU NOSQL, HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU QUẢN TRỊ CƠ SỞ DỮ LIỆU N TRỊ CƠ SỞ DỮ LIỆU CƠ SỞ DỮ LIỆU NOSQL, HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU SỞ DỮ LIỆU NOSQL, HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU DỮ LIỆU NOSQL, HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU LIỆU NOSQL, HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU U
MONGODB VÀ CÁC KHÁI NIỆU NOSQL, HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU M CƠ SỞ DỮ LIỆU NOSQL, HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU BẢN TRỊ CƠ SỞ DỮ LIỆU N:
1. Cơ sở dữ liệu NOSQL sở dữ liệu NOSQL dữ liệu NOSQL liệu NOSQLu NOSQL
a) NoSQL là gì ?
NoSQL – Not Only SQL, là một thế hệ CSDL mới với các đặc điểm nổi bật như:
không ràng buộc Non relation , phân tán Distribute, mã nguồn mở open source, có
khả năng mở rộng theo chiều ngang Horizontal scalable, lược đồ tự do free
schema, PI đơn giản,... Có thể lưu trữ xử lý dữ liệu từ một lượng rất nhỏ cho đến
hàng petabytes trong một hệ thống chịu tải, chịu lỗi cao và đáp ứng thời gian thực.
NoSQL bao gồm hàng loạt các công nghệ CSDL khác nhau đã được phát triển để
đáp ứng với nhu cầu gia tăng khối lượng dữ liệu, tần số truy cập và hiệu xuất xử lý,
cùng với khả năng lưu trữ tiết kiệm. Cơ sở dữ liệu quan hệ không được thiết kế để
đáp ứng những thách thức về quy mô lưu trữ và khả năng xử lý nhanh chóng của
các ứng dụng hiện đại này.
b) Lịch sử phát triển của NoSQL:
Thuật ngữ NoSQL đã được sử dụng bởi Carlo Strozzi trong năm 1998 như là tên
của tập tin dựa trên cơ sở dữ liệu mà ơng đang làm. Đó là tên gọi chung cho các cơ
sở dữ liệu quan hệ nguồn mở nhỏ. Đây là một cơ sở dữ liệu quan hệ mà không có
một giao diện SQL. Như vậy nó khơng thực sự là một phần của phong trào NoSQL
của chúng ta ngày nay.
Thuật ngữ này lại nổi lên vào năm 2009 khi Eric Evans nhân viên của
Rackspace, được ủy thác dự án Cassandra, giới thiệu lại thuật ngữ NoSQL khi
Johan Oskarsson của Last.fm muốn tổ chức một hội thảo về cơ sở dữ liệu nguồn

mở phân tán. Eric Evans đã sử dụng “NoSQL” để đặt tên cho các đột biến hiện nay
trong cơ sở dữ liệu phi quan hệ, thuật ngữ NoSQL thường được sử dụng với ý
nghĩa là "không chỉ SQL" để mô tả sự gia tăng của các dự án và sản phẩm mới.
c) Đặc điểm của cơ sở dữ iệu NoSQL:
Hầu hết các CSDL NoSQL điều có chung một số đặc điểm nổi bật. Tất nhiên,
NoSQL là một khái niệm rất rộng và có rất nhiều hệ quản trị CSDL khác nhau,
nhưng chúng đều có nhiều hoặc ít hơn các đặc điểm này. Tuy nhiên, có thể nói
CSDL NoSQL có thể mang các đặc điểm như sau:
Mơ hình dữ liệu phi quan hệ ( Non-relational ): Bao gồm các mơ hình dữ liệu
khác nhau nhưng nhìn chung khơng có mối quan hệ ràng buộc lẫn nhau. Có thể có
những cấu trúc dữ liệu phức tạp hơn, nhưng nó khơng cứng nhắc như mơ hình dữ
liệu quan hệ. “Non-relational” là khái niệm không sử dụng các ràng buộc dữ liệu
cho nhất quán dữ liệu ở NoSQL database.
Trang 3


Lưu trữ phân tán ( Distributed storage ): Hệ thống CSDL NoSQL được phân
tán sang nhiều máy tính khác nhau, để cung cấp dữ liệu cho người dùng. Mỗi phần
dữ liệu sau đó sẽ được nhân rộng trên một số lượng nhất định máy dự phịng với
tính sẵn sàng đáp ứng cao. Mơ hình lưu trữ phân tán các tập tin hoặc dữ liệu ra
nhiều máy tính khác nhau trong mạng LAN hoặc Internet dưới sự kiểm soát của
phần mềm quản lý.
Nhất quán cuối ( Eventual consistency): Tính nhất quán của dữ liệu không cần
phải đảm bảo ngay tức khắc sau mỗi tác vụ ghi. Một hệ thống phân tán chấp nhận
những ảnh hưởng theo phương thức lan truyền và sau một khoảng thời gian, cuối
cùng dữ liệu trên hệ thống sẽ trở lại trạng thái nhất quán.
Khả năng mở rộng chiều dọc ( Vertical scalable): Khi dữ liệu lớn về số lượng,
phương pháp tăng cường khả năng lưu trữ và xử lý bằng việc cải tiến phần mềm và
phần cứng trên một máy tính đơn, được gọi là khả năng mở rộng chiều dọc.
Khả năng mở rộng chiều ngang ( Horizontal scalable): Khi dữ liệu lớn về số

lượng, phương pháp tăng cường khả năng lưu trữ và xử lý là dùng nhiều máy tính
phân tán. Phân tán dữ liệu được hỗ trợ bởi phần mềm tức cơ sở dữ liệu. Hàng trăm
máy tính nhỏ được gộp lại tạo thành một hệ thống tính tốn mạnh hơn nhiều so với
vi xử lý RISC truyền thống đơn lẻ . Mơ hình này tiếp tục được hỗ trợ bởi các công
nghệ kết nối Myrinet và InfiniBand. Từ đó chúng ta có thể quản lý, bảo trì từ xa,
xây dựng batch procession (xử lý đồng loạt tập lệnh) tốt hơn. Do những đòi hỏi về
tốc độ xử lý I/O cao, lượng cực lớn dữ liệu... Mở rộng theo chiều ngang sẽ thúc
đẩy các công nghệ lưu trữ mới phát triển giống như object storage devices OSD .
Phi cấu trúc ( SchemaFree ) : Không cần thiết kế các bảng, các cấu trúc như của
SQL. Thay vào đó chỉ cần lưu trữ các giá trị mới vào CSDL, không cần phải xác
định cấu trúc trước.
- Không hỗ trợ SQL
- Dữ liệu lớn (Big Data)
- Dùng SE thay thế cho CID
Triển hai linh hoạt ( Deployment Flexibility ): Việc bổ sung loại bỏ các node,
hệ thống sẽ tự động nhận biết để lưu trữ mà không cần phải can thiệp bằng tay. Hệ
thống cũng không địi hỏi cấu hình phần cứng mạnh, đồng nhất.
d) Ưu điểm:
 Đáp ứng được sự tăng trưởng của dữ liệu lớn (Big Data) .
 Truy xuất dữ liệu lớn với tốc độ cao.
 Dữ liệu đa dạng, có cấu trúc, bán cấu trúc hoặc phi cấu trúc.
 Dữ liệu phức tạp, được lưu trữ và quản lý tại các trung tâm lưu trữ khác.
 Cần ít tài nguyên và phần cứng của máy chủ để triển khai.
 Hỗ trợ đánh chỉ mục Index tất cả các thuộc tính.
 Mã nguồn mở.
 Mở rộng theo chiều dọc.
 Các CSDL NoSQL khác nhau cho những dự án khác nhau
 NoSQL phù hợp với công nghệ đám mây: NoSQL và đám mây là một sự trùng
khớp tự nhiên, chúng có khả năng tận dụng được việc cung cấp mềm dẻo của đám
mây

Trang 4


 Ngăn ngừa được sự thực thi không ổn định của I/O.
e) Nhược điểm:
 Hỗ trợ không đồng đều cho các doanh nghiệp.
 Sự tin tưởng chưa cao đối với nhiều doanh nghiệp.
 Các CSDL NoSQL khơng có nhiều sự liên hệ tới các công cụ BI thường được sử
dụng.
 Tính mới mẻ của NoSQL có nghĩa là khơng có nhiều lập trình viên và người quản
trị mà biết cơng nghệ này.
 Những vấn đề về tính tương thích: Mỗi CSDL NoSQL có các giao diện lập trình
ứng dụng API riêng của mình, các giao diện truy vấn độc nhất vơ nhị, và những sự
riêng biệt.
 Khó khăn trong việc lưu trữ các dữ liệu mang nội dung nghiệp vụ phức tạp.
2. Hệu NOSQL quản trị cơ sở dữ liệu MongoDB n trị cơ sở dữ liệu MongoDB cơ sở dữ liệu NOSQL sở dữ liệu NOSQL dữ liệu NOSQL liệu NOSQLu MongoDB
a) Giới thiệu về MongoDB :
MongoDB là một cơ sở dữ liệu NoSQL hướng tài liệu, mã nguồn mở được viết
hồn tồn bằng ngơn ngữ C++. MongoDB được trang bị khả năng mở rộng, hiệu
suất cao, đảm bảo tính nhất qn, dễ dàng mở rộng và có lược đồ tự do. Đây là một
cơ sở dữ liệu phi quan hệ thay vì lưu trữ dữ liệu theo các bảng như cơ sở dữ liệu
truyền thống, MongoDB lưu trữ cấu trúc dữ liệu thành các văn bản dựa vào JSON
với mơ hình động, các văn bản này có thể lồng vào nhau tạo nên một hệ thống cây
phân cấp phức tạp, nhưng điều này khiến cho việc tích hợp dữ liệu cho các ứng
dụng trở nên nhanh và dễ dàng truy vấn và đánh chỉ mục hơn.
Mục đích chính trong việc phát triển MongoDB chính là thu hẹp khoản cách giữa
cơ sở dữ liệu cặp khoá – giá trị có tính đáp ứng nhanh và khả năng mở rộng cao và
cơ sở dữ liệu quan hệ truyền thống với các chức năng hỗ trợ phong phú. MongoDB
giữ lại các thuộc tính thân thiện của SQL. Do đó các câu truy vấn khá giống với
SQL nên MongoDB khá thích hợp để chuyển đổi từ ngôn ngữ truy vấn SQL sang

NoSQL.
MongoDB được sử dụng tốt nhất với nhu cầu cần truy vấn động. Nó thích hợp cho
các ứng dụng tầm trung trở lên, đặc biệt nếu chúng ta cần tốc độ nhanh cho một cơ
sở dữ liệu lớn vì MongoDB ngồi tốc độ đọc nhanh ra thì tốc độ ghi của nó cũng
rất nhanh. MongoD đi kèm với một trình tiện ích JavaScript đơn giản nhưng mạnh
mẽ, nó hữu ích trong quản trị và thao tác dữ liệu.
b) Lịch sử phát triển MongoDB:
Quá trình phát triển của Mongo với một số cột mốc:
 MongoDB được xây dựng tại công ty 10gen, trong một dự án xây dựng nền tảng
cho một dịch vụ giống như Google App Egine vào năm 2007.

Trang 5


 Đến năm 2009 MongoD trở thành một sản phẩm độc lập với mã nguồn mở cùng
với giấy phép AGPL.
 Trong tháng 3 năm 2011, từ phiên bản 1.4 đã hoàn thiện và sẵn sàng đưa vào sử
dụng.
 Phiên bản mới nhất là 3.0.5 được phát hành vào ngày 28 tháng 07 năm 2015.
c) Đặc điểm của MongoDB :
Lưu trữ hướng Document: Có thể lưu trữ các kiểu tài liệu phức tạp như : mảng,
bảng, băm, kiểu integer, các BSON object và tất cả các kiểu dữ liệu được JSON hỗ
trợ.
 Hỗ trợ chỉ mục đầy đủ: các thao tác trên chỉ mục như xoá hay cấp lại chỉ mục. Hỗ
trợ chỉ mục trên bất kỳ các thuộc tính bao gồm:
 Chỉ mục duy nhất
 Chỉ mục hỗn hợp
 Chỉ mục trên mảng
 Chỉ mục TTL (TTL- Time to live)
 Chỉ mục rãi rác

 Chỉ mục tìm kiếm văn bản (text)
 Tính sao chép và tính sẵn sàng cao: khả năng chịu lỗi, chịu tải cao, tính nhất
quán.
 Lưu trữ phân tán (sharding)
 Mở rộng theo chiều ngang.
 Tự động phân cụm dữ liệu
 Tự động cân bằng giữa các cụm dữ liệu thông qua các thao tác thêm hay gỡ bỏ.
 Phân cụm cho tất cả các bộ sưu tập, trừ các bộ sưu tập có kích thước nhỏ.
 Lưu trữ bản dự phòng khi phát sinh sự cố
 Ứng dụng kết nối các cụm dữ liệu thông qua tiến trình mongos.
 Mơ hình đơn giản.
 Truy vấn : Dễ dàng và đa dạng.
 Hiệu quả trong lưu trữ các tập tin nhị phân, không làm thay đổi dung lượng và
truy xuất nhanh chóng.
3. Các khái niệu NOSQLm cơ sở dữ liệu NOSQL bản trị cơ sở dữ liệu MongoDB n trong MongoDB (database, collection,
document, field):
a) Database:
Database là một nơi lưu trữ vật lý cho các bộ sưu tập (Collection). Mỗi Database
lấy tập hợp các file riêng của nó trên hệ thống file. Mỗi MongoDB Server có thể có
nhiều cơ sở dữ liệu.
Cơ sở dữ liệu (Database) MongoDB nằm trên một máy chủ MongoDB, máy chủ
này có thể lưu trữ nhiều cơ sở dữ liệu một cách độc lập và riêng biệt. Một cơ sở dữ
liệu chứa một hay nhiều bộ sưu tập, trong bộ sưu tập chứa các tài liệu.

Trang 6


b) Collection :
Collection: là một nhóm các dữ liệu thuộc cùng loại do người dùng quy định,
sự khác nhau giữa collection với table trong RDBMS đó là collection khơng có

răng
buộc, quan hệ với collection khác. Mỗi dữ liệu trong collection không cố định về
số
trường như row trong table.
c) Document :
Một Document trong MongoDB, có cấu trúc tương tự như kiểu dữ liệu JSON, là
một tập hợp các cặp key-value. Các Document có schema động, nghĩa là
Document trong cùng một Collection khơng cần thiết phải có cùng một tập hợp các
trường hoặc cấu trúc giống nhau, và các trường chung trong Document của một
Collection có thể giữ các kiểu dữ liệu khác nhau.
_id: là trường bắt buộc phải có trong mỗi document. Trường này biểu diễn các
giá trị duy nhất cho từng document. Vì nó là bắt buộc nên nếu khơng thiết lập giá
trị
cho nó MongoDB sẽ tự động sinh ra trường này.
d) Field:
Field trong MongoDB là một cặp “tên - giá trị” trong một Docunment. Một
Document có thể khơng có hoặc có nhiều Field. Các Field giống các cột ở hệ thống
cơ sở dữ liệu.
* So sánh hệ quản trị cơ sở dữ liệu quan hệ và MongoDB:
RDBMS
MONGODB
Database

Database

Table

Collection

Row


Document

Column

Field

Primary Key

Primary Key (mặc định là _id)

II. THỰC HIỆN TẠO CƠ SỞ DỮ LIỆU VÀ THỰC HIỆN CÁC THAO TÁC.C HIỆU NOSQL, HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU N TẠO CƠ SỞ DỮ LIỆU VÀ THỰC HIỆN CÁC THAO TÁC.O CƠ SỞ DỮ LIỆU NOSQL, HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU SỞ DỮ LIỆU NOSQL, HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU DỮ LIỆU NOSQL, HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU LIỆU NOSQL, HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU U VÀ THỰC HIỆN TẠO CƠ SỞ DỮ LIỆU VÀ THỰC HIỆN CÁC THAO TÁC.C HIỆU NOSQL, HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU N CÁC THAO TÁC.
1. Tạo cơ sở dữ liệu :o cơ sở dữ liệu NOSQL sở dữ liệu NOSQL dữ liệu NOSQL liệu NOSQLu :
Có 2 cách để tạo CSDL, bao gồm sử dụng giao diện quản trị và sử dụng câu lệnh
Trang 7


NoSQL.
a) Tạo CSDL với giao diện quản trị :
Sau khi mở chương trình MongoDB, người dùng truy cập cần thực hiện các bước
sau đây trên giao diện quản trị:
Bước 1: Bắt đầu – Nhấn chọn vào dấu “ + ” ở góc trái phía dưới của màn hình.

Bước 2 : Khai báo các thông tin cần thiết vào bảng Create Database, trong đó:
+ Tại Database Name, ta nhập tên của của CSDL muốn tạo.
+ Tại Collection Name, ta nhập tên của một bộ sưu tập trong CSDL muốn tạo.

Bước 3: Kết thúc – Nhấn nút Create Database để hoàn tất việc tạo CSDL.

b) Tạo CSDL với câu lệnh :

Trang 8


Sau khi mở chương trình MongoDB, người dùng truy cập cần thực hiện các bước
sau đây trên giao diện quản trị:
- Bước 1: Mở trình soạn thảo truy vấn
- Bước 2: Xây dựng câu lệnh tạo CSDL theo Cú pháp:
use <database_name>
- Bước 3: Nhấn Enter để hoàn tất việc tạo CSDL.
Ví dụ: Nếu muốn tạo một cơ sở dữ liệu có tên là SV, sử dụng lệnh như sau:

Nếu như thành cơng thì cmd sẽ trả về "switch to db SV"
* Để xem cơ sở dữ liệu đã chọn hiện tại, sử dụng lệnh: db .

* Để xem tất cả các cơ sở dữ liệu có trong hệ thống , sử dụng lệnh: show dbs .

2. Một số thao tác khác :t số thao tác khác : thao tác khác :
2.1. Xóa dữ liệu :
Có 2 cách để xóa CSDL, bao gồm sử dụng giao diện quản trị và sử dụng câu lệnh
NoSQL.
a) Xóa CSDL với giao diện quản trị :
Sau khi mở chương trình MongoDB, người dùng truy cập cần thực hiện các bước
sau đây trên giao diện quản trị:
Bước 1: Bắt đầu – Đặt trỏ vào CSDL muốn xóa.
Bước 2: Nhấn chọn vào biểu tượng xóa.

Bước 3: Khai báo tên CSDL muốn xóa vào bảng Drop Database.

Trang 9



Bước 4: Kết thúc – Nhấn nút Drop Database để hồn tất việc xóa CSDL.

b) Xóa CSDL với câu lệnh :
Sau khi mở chương trình MongoDB, người dùng truy cập cần thực hiện các bước
sau đây trên giao diện quản trị:
- Bước 1: Mở trình soạn thảo truy vấn
- Bước 2: Xây dựng câu lệnh tạo CSDL theo Cú pháp :
db.dropDatabase()
- Bước 3: Nhấn Enter để hồn tất việc xóa CSDL.
Ví dụ: Nếu muốn xóa cơ sở dữ liệu có tên là SV, ta sẽ thực hiện như sau:
Đầu tiên, kiểm tra danh sách các cơ sở dữ liệu có sẵn bằng lệnh: show dbs

Nếu muốn xóa cơ sở dữ liệu SV, thì ta dùng lệnh: db.dropDatabase()

Cuối cùng, thử kiểm tra danh sách các cơ sở dữ liệu.

Trang 10


Nếu thấy cơ sở dữ liệu muốn xóa khơng cịn trong danh sách cơ sở dữ liệu thì
việc xóa cơ
sở dữ liệu đã hoàn thành.
2.2. Thêm dữ liệu :
Sau khi mở chương trình MongoDB, người dùng truy cập cần thực hiện các bước
sau đây trên giao diện quản trị:
- Bước 1: Mở trình soạn thảo truy vấn
- Bước 2: Xây dựng câu lệnh thêm dữ liệu theo Cú pháp :
db.Collection_Name.insert(Data)
* Trong đó:

CollectionName là tên của collection chúng ta cần thêm dữ liệu vào.
Data có thể là 1 object chứa các trường và giá trị của nó hoặc cũng có thẻ là một
mảng đối tượng (nếu như bạn muốn thêm nhiều bản ghi trên một lần khai báo).
- Bước 3: Nhấn Enter để hồn tất việc xóa CSDL.
* Phương thức insert trong MongoDB dùng để thêm mới một hoặc nhiều dữ liệu
vào trong MongoDB.
VD1: Thêm mới một dữ liệu vào collection có tên là “NamHocHocKy” :

Nếu như insertIds trả về là 0 tương đương với việc bạn đã thêm thành công một
bản ghi vào trong MongoDB . Ứng với ví dụ trên thì có nghĩa là chúng ta đã thêm
thành cơng dữ liệu.

VD2: Thêm mới nhiều dữ liệu vào collection có tên là “NamHocHocKy”:

Trang 11


Nếu như tham số insertedIds trả về có 2 giá trị, tức là dữ liệu muốn thêm đã
được thực hiện thành công.

2.3. Cập nhật dữ liệu :
Sau khi mở chương trình MongoDB, người dùng truy cập cần thực hiện các bước
sau đây trên giao diện quản trị:
- Bước 1: Mở trình soạn thảo truy vấn
- Bước 2: Xây dựng câu lệnh cập nhật theo Cú pháp :
db.Collection_Name.update(selection_criteria , update_data)
- Bước 3: Nhấn Enter để hồn tất việc xóa CSDL.
Ví dụ: Theo dõi Collection có tên “NamHocHocKy” có dữ liệu sau:
Giả sử ta muốn thiết lập “HocKy” mới là '3' cho Document có “HocKy” là '2', ta
thực hiện như sau:


Kiểm tra lại dữ liệu bằng lệnh: db.NamHocHocKy.find( )
* Dữ liệu nhận được sau khi cập nhật:

Trang 12


So sánh với lúc đầu, nếu thấy vị trí cần cập nhật đã thay đổi thành giá trị mong
muốn, thì việc cập nhật dữ liệu đã được hoàn thành.
* Dữ liệu trước khi cập nhật:

2.4. Truy vấn dữ liệu:
a) Lấy tất cả dữ liệu trong Collection:
Để lấy tất cả dữ liệu ở trong collection chúng ta sử dụng lệnh find() với Cú pháp:
db.Collection_Name.find()
* Trong đó: CollectionName là tên của collection muốn truy vấn.
Tuy nhiên, khi chỉ sử dụng mỗi phương thức find thì dữ liệu trả về sẽ dưới dạng
object nhưng khơng theo một cấu trúc nào cả.
Ví dụ: Lấy tất cả dữ liệu có trong collection “NamHocHocKy” của CSDL “SV” :

Trang 13


* Dựa vào chức năng của hàm find() thì chúng ta có thể so sánh nó tương đương
như câu lệnh Select * from trong SQL.
b) Truy vấn có điều kiện:
Để truy vấn có điều kiện trong MongoDB, ta cũng sử dụng Cú pháp tương tự như
mục a, nhưng lúc này chúng ta sẽ chèn thêm điều kiện vào trong hàm find() với Cú
pháp sau:
db.Collection_Name.find(condition)

Trong đó:
CollectionName là tên của collection muốn truy vấn.
Condition là object chứa mệnh đề điều kiện.
Ví dụ: In tất cả các mơn học có số tín chỉ là 3 trong collection “MonHoc” :

c) Truy vấn nhiều điều kiện:
Trong MongoDB cũng có hỗ trợ chúng ta truy vấn nhiều điều kiện trên một lần
khai báo với các toán tử AND, OR giống như trong SQL.
c.1. AND :
Để thực hiện phép tốn này thì các bạn chỉ cần thêm các điều kiện cảu câu truy
vấn vào trong object chứa điều kiện vào trong phương thức find.
Ví dụ: Lấy ra mơn học mà có số tín chỉ là 2 và mã môn học là 1100003 từ
collection “MonHoc”:

Trang 14


c.2. OR :
Để sử dụng mệnh đề or (hoặc) trong MongoDB thì chúng ta cần phải truyền một
key scope có tên là $or vào làm key chứa mảng các điều kiện hoặc, theo Cú pháp:
db.collectionName.find({
$or : [
{key1: value1},
{key2: value2},
...
{keyn: valuen}
]
})
Ví dụ: Lấy ra mơn học mà có số tín chỉ là 4 hoặc mơn học có mã mơn học là
1100003 từ collection “MonHoc”:


d) Chọn lọc các trường cần lấy:
Để chọn lọc các trường cần hiển thị ra trong 1 collection thì các bạn sử dụng lệnh
find() với Cú pháp sau:
db.Collection_Name.find(ObjectWhere , ObjectSelect)
Trong đó:
Trang 15


ObjectWhere là object chứa các điều kiện ở các phần trên. Nếu khơng muốn lọc
thì để một object rỗng vào.
ObjectSelect là obejct chứa các trường dữ liệu cần lấy ra. Mặc định thì nó sẽ lấy
cả _id, nên nếu như bạn khơng muốn hiển thị _id thì bạn cần thêm _id: 0 vào
object.
Ví dụ: Lấy ra các thơng tin sau từ collection “ MonHoc”: mã mơn học, tên mơn
học.

III. TÌM HIỂU VỀ CƠ SỞ DỮ LIỆU NOSQL, HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU U VỀ CƠ SỞ DỮ LIỆU NOSQL, HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU CÁC TOÁN TỬ SO SÁNH SỬ DỤNG TRONG CÂU TRUY SO SÁNH SỬ SO SÁNH SỬ DỤNG TRONG CÂU TRUY DỤNG TRONG CÂU TRUY NG TRONG CÂU TRUY
VẤN. N.
***Toán tử so sánh (comparison query operators)
Các tốn tử sau có thể được sử dụng trong các truy vấn để so sánh các giá trị:
1.$ eq:
Các giá trị bằng nhau (trả về các document trong đó giá trị bằng với một giá trị
được chỉ định)
Cú pháp: {<field>: {$eq: <value> }}
+Hiển thị thơng tin mã sinh viên có điểm mơn học nào đó bằng 8 điểm.

Trang 16



+Hiển thị thơng tin số sinh viên có điểm mơn học bằng 8 điểm.

2. $ne:
Các giá trị không bằng nhau (so sánh các giá trị không bằng giá trị được chỉ
định)
Cú pháp: {field: {$ne: value}}
Ví dụ: Hiển thị thơng tin sinh viên (MaSinhVien, Ho, Ten) có tên khơng phải là
“Nam”, “Phương” và sắp xếp theo thứ tự (bỏ qua 10 người đầu tiên)
db.sinhvien.find({Ten:{$ne:"Nam",$ne:"Phương"}},{_id:0,MaSinhVien:1,Ho:1,
Ten:1}).sort({"Ten":1}).skip(10)

3. $gt:
Giá trị lớn hơn giá trị khác (trả về các document trong đó giá trị của trường lớn
hơn một giá trị được chỉ định)
Cú pháp: {field: {$gt: value}}
Ví dụ: Lấy thơng tin sinh viên (MaSinhVien, Ho, Ten) có số điểm mơn học lớn
hơn 9 điểm và sắp xếp theo tên
db.sinhvien.find({"MonHocDK.Diem":{$gt:9}},
{_id:0,MaSinhVien:1,Ho:1,Ten:1}).sort({"Ten":1})

Trang 17


4. $gte:
Giá trị lớn hơn hoặc bằng một giá trị khác (trả về các document trong đó giá trị
của trường lớn hơn hoặc bẳng 1 giá trị được chỉ định)
Cú pháp: {field: {$gte: value}}
5. $lt:
Giá trị nhỏ hơn giá trị khác (so sánh các giá trị nhỏ hơn giá trị được chỉ định)
Cú pháp: {field: {$lt: value}}

6. $lte:
Giá trị nhỏ hơn hoặc bằng một giá trị khác (so sánh các giá trị nhỏ hơn hoặc
bằng một giá trị được chỉ định)
Cú pháp: {field: {$lte: value}}
Ví dụ:
+Sử dụng $gte và $lte:
Lấy thơng tin sinh viên (MaSinhVien, Ho, Ten) có số điểm môn học nằm trong
đoạn từ 8.5 đến 9.5 điểm và sắp xếp theo tên
b.sinhvien.find({"MonHocDK.Diem":{$gte:8.5,
$lte:
9.5}},
{_id:0,MaSinhVien:1,Ho:1,Ten:1}).sort({"Ten":1})

+Sử dụng $gte và $lt:
Lấy thông tin sinh viên (MaSinhVien, Ho, Ten) có số điểm mơn lớn hơn hoặc
bằng 4 điểm và nhỏ hơn 6 điểm và sắp xếp theo tên
db.sinhvien.find({"MonHocDK.Diem":{$gte:4,
$lt:
6.5}},
{_id:0,MaSinhVien:1,Ho:1,Ten:1}).sort({"Ten":1})

Trang 18


7. $in:
Giá trị được so khớp trong một mảng (trả về các document trong đó giá trị nằm
trong mảng được chỉ định)
Cú pháp: {field: { $in: [<value1>, <value2>, ... <valueN> ] } }
Ví dụ:
Lấy thơng tin sinh viên (MaSinhVien, Ho, Ten) có số điểm mơn là một trong

các điểm (1;2;3;4;5;6) và sắp xếp theo tên
db.sinhvien.find({"MonHocDK.Diem":{$in:[1,2,3,4,5.6]}},
{_id:0,MaSinhVien:1,Ho:1,Ten:1}).sort({"Ten":1})

IV. TÌM HIỂU VỀ CƠ SỞ DỮ LIỆU NOSQL, HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU U CÁCH TRUY VẤN. N DOCUMENT LỒNG NHAU.NG NHAU.
*Query on Embedded/Nested Documents
Khi thiết kế dữ liệu kiểu Embedded thì khơng cần tạo ra nhiều collection để lưu
trữ, mà sẽ lưu trữ tất cả vào một collection.
Ví dụ có collection sinhvien:

Document MonHocDK chứa một array các document trong collection mon_hoc
1. Truy vấn lồng nhau trên một mảng
Sử dụng dấu “.” để kết nối các document embedded với nested document theo
Cú pháp:
“Field.nestedfield”
Hiển thị thơng tin mã sinh viên, sinh viên có mã môn học = ‘1700016’

Trang 19


Lưu ý: Nếu bỏ dấu “ ” thì truy vấn khơng thực hiện được

2.Tìm kiếm các document với nhiều điều kiện cho một field embeded trong
một array của document:
2.1 Sử dụng toán tử so sánh
Bỏ qua 2 sinh viên đầu tiên, hiển thị thơng tin các sinh viên có tên: “Nam” và có
điểm số mơn học từ 8 đến 10 điểm.

2.2 Sử dụng AND:
Hiển thị thông tin các sinh viên có tên: “Nam” và có mã mơn học: ‘1700017’ và

điểm số từ 8 đến 10 điểm.

Trang 20



×