Tải bản đầy đủ (.pdf) (16 trang)

Bt hqtcsdl nosql mongodb tuan1 7

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 (575.41 KB, 16 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>BÀI TẬP THỰC HÀNH </b>

<b>HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU NoSQL- MongoDB </b>

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b>MỤC LỤC </b>

Tuần 1: Installing & basic operations ... 1

Tuần 2-3-4: CRUD Operations ... 5

Tuần 5-6-7: Aggregation Operations ... 11

Tuần 8: Index ... 15

Tuần 8-9: Replication - Sharding ... 23

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

Tuần 1. Installing & basic operations

Tuần 1: Installing & basic operations

→ Backup database Test ra thư mục hiện hành

mongodump –d Test –c dsSinhvien –o test

→ Backup collection dsSinhvien trong database Test ra thư mục test 1.2. Restore:

Ví dụ:

mongorestore –-drop dump/

→ Xóa và restore tất cả các collections có trong thư mục dump mongorestore --drop --nsInclude=test.* dump/

→ Xóa và restore toàn bộ collection trong database test

mongorestore --drop --nsInclude=test.purchaseorders dump/ hoặc:

mongorestore --drop --db=test --collection=purchaseorders dump/test/purchaseorders.bson

mongorestore --drop –d test –c purchaseorders dump/test/purchaseorders.bson → Xóa và restore collections purchaseorders của database test có trong thư mục dump

2. JSON:

<i><b>Mục tiêu: </b></i>

- <i><b>Cài đặt MongoDB Server trên máy tính cá nhân. </b></i>

- <i><b>Cài đặt mongodb-database-tool để thực hiện import và export database. </b></i>

- <i><b>Cài đặt mongosh để hỗ trợ định dạng ở chế độ command line. </b></i>

- <i><b>Cài đặt mongodb-compass để thao tác với database bằng UI (User Interface). </b></i>

- T<i><b>ạo được tài khoản Atlas trên cloud MongoDB. </b></i>

- Th<i>ực hành import – export dữ liệu. </i>

- Th<i>ực hành các lệnh xem database, collection. </i>

mongorestore --drop –d <dbName> –c <coName> [des-folder/]/[file.bson] mongodump -d <dbName> -o [des-folder/]>

mongodump -d <dbName> -c <colectionName> -o [des-folder/]

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

Tuần 1. Installing & basic operations 2.1. Export:

2.2. Import:

<i>B. Một số lệnh cơ bản trên mongo/mongosh: </i>

use {database_name}: chuyển sang database_name (nếu khơng có thì tạo mới). show dbs: hiển thị tồn bộ database đã có.

show collections: hiển thị tồn bộ collections của database hiện hành.

db.createCollection(“collection_name”): tạo collection trong CSDL hiện hành có tên collection_name.

db.{collection_name}.insertOne(<document>): thêm 1 document vào collection. db.{collection_name}.find(): hiển thị tồn bộ document có trong collection_name.

db.{collection_name}.find(projection): hiển thị document có trong collection_name theo các field trong projection.

db.{collection_name}.find().limit(n): hiển thị n document.

db.{collection_name}.find().skip(n):hiển thị các document bỏ qua document thứ n.

Bài 1. Cài đặt

Bài 1.1. Cài đặt MongoDB Server trên máy tính cá nhân <i>(xem chi tiết file hướng dẫn).</i>

Bài 1.2. Cài đặt mongodb-database-tool để thực hiện import và export database <i>(xem chi tiết file hướng dẫn).</i>

Bài 1.3. Cài đặt mongosh để hỗ trợ định dạng ở chế độ command line <i>(xem chi tiết file hướng dẫn).</i>

Bài 1.4. Cài đặt mongodb-compass để làm việc bằng UI (User Interface) <i>(xem chi tiết file hướng dẫn).</i>

Bài 1.5. Làm việc với MongoDB Atlas <i>(xem chi tiết file hướng dẫn).</i>

1.5.1. Tạo tài khoản sử dụng MongoDB Atlas. 1.5.2. Load sample data vào Atlas.

Bài 2. Thao tác trên MongoDB Shell

Thực hiện từng bước sau:

B1. Khởi động MongoDB Shell.

B2. Tạo CSDL có tên QLBH, kiểm tra sự tồn tại của CSDL vừa tạo.

B3. Tạo collection có tên sanPham, kiểm tra sự tồn tại của collection vừa tạo.

B4. Thêm lần lược các document sau vào trong collection sanPham, kiểm tra kết quả, cho nhận xét. {“tenSp”=”nuoc suoi”, “donGia”=4000}.

{tenSp=”nuoc coca”, donGia=7000}.

B5. Thêm một documment sau vào trong trong collection sanPham, kiểm tra kết quả, cho nhận xét. {tenSp=”nuoc coca”, donGia=7000, coDuong=”co”}

mongoimport --drop –d <databaseName> –c <collectionName> [des-folder/]/[file.json]

mongoexport –d <databaseName> –c <collectionName> -o [des-folder/]/[file.json]

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

Tuần 1. Installing & basic operations

Bài 3. Thao tác trên MongoDB Compass

Thực hiện từng bước sau:

B1. Khởi động MongoDB Compass.

B2. Tìm hiểu các thành phần trên cửa sổ MongoDB Compass. B3. Kiểm tra CSDL QLBH mà bạn đã tạo bằng MongoDB Shell.

B4. Thêm một collection có tên khachHang, kiểm tra sự tồn tại của collection vừa tạo. B5. Thêm một document sau vào trong collection khachHang, kiểm tra kết quả.

{“tenKH”=”Nguyen Van A”, “diaChi”=”12 Nguyen Van Bao”}.

B6. Thêm một document sau vào trong trong collection khachHang, kiểm tra kết quả, cho nhận xét. {“tenKH”=”Nguyen Van A”, “dienThoai”=”077003068”}.

Bài 4. Thao tác qua lại trên MongoDB Shell và MongoDB Compass

Thực hiện từng bước sau:

B1. Quay về MongoDB Shell để kiểm tra lại các thành phần (collection, document, lược đồ của document) có trong CSDL QLBH.

B2. Thực hiện xóa một document có tenSp là “nuoc suoi” trong sanPham, kiểm tra kết quả. B3. Chuyển sang MongoDB Compass kiểm tra lại các document có trong sanPham.

B4. Thực hiện xóa một document bất kỳ trong collection khachHang trong MongoDB Compass, và kiểm tra kết quả bằng MongoDB Shell.

Bài 5. Thao tác trên Atlas

Thực hiện từng bước sau:

B1. Đăng nhập Atlas bằng tài khoản đã đăng ký. B2. Tạo một cluster có tên là myCluster.

B3. Thực hiện tải các cơ sở dữ liệu mẫu (example database) vào myCluster. B4. Xem các collection và document có trong các CSDL trên.

B5. Lấy các chuỗi kết nối để kết nối đến Atlas từ mongoshell, mongo Compass, application, VS Code. a. Kết nối Atlas từ MongoDB Shell.

b. Kết nối Atlas từ MongoDB Compass.

c.

Kết nối Atlas từ Application (tương tự).

Bài 6. Tạo database {import/export}

Cho database gồm 2 collection là sinhvien và lophoc tương ứng với 2 file JSON là <i>sinhvien.json </i>và

<i>lophoc.json </i>chứa các document với danh sách sinh viên và lớp học như sau:

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

Tuần 1. Installing & basic operations }

Bài 6.1. Thực hiện import 2 file JSON này lên MongoDB server.

Bài 6.2. Thực hiện các câu truy vấn các document trong collection như sau: Xem kết quả và nêu ý nghĩa câu query.

Bài 6.3. Thực hiện xuất dữ liệu 2 collection sinhvien và lophoc ra 2 file BSON. Kiểm tra lại kết quả.

Bài 7. Thực hiện lấy các collection trên Atlas vào server local

Dùng Mongo Shell/ MongoDB Compass kết nối với Atlas. Sau đó, lấy một collection bất kỳ trên Atlas và đưa vào server local.

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

Tuần 2-3-4. CRUD Operations

5

Tuần 2-3-4: CRUD Operations

<b>Yêu cầu: </b>

Tạo file MSWord theo định dạng HoTen_MSSV_Tuan234.docx, chụp lại các câu lệnh và kết quả chạy vào file, nộp lại vào cuối buổi thực hành.

<b>Tóm tắt lý thuyết: </b>

db.collection.insertOne(): insert a single document into a collection. db.collection.insertMany([ ]): insert multiple documents into a collection. db.collection.updateOne(<filter>, <update>, <options>)

db.collection.updateMany(<filter>, <update>, <options>)

<i>Các operator trong update: </i>

- Field: <i>$set, $currentDate, $inc, $mul, $min, $max, $rename, $unset,… </i>

- Array: <i>$, $[], $[<identifier>], </i>$addToSet, $pop, $pull, $pullAll, $push, <i>$each,… </i>

db.collection.replaceOne(<filter>, <update>, <options>)

db.collection.deleteOne(): Delete the first document that matches the filter. db.collection.deleteMany(): Delete all documents that match a specified filter.

db.collection.remove(): Delete a single document or all documents that match a specified filter. db.collectionname.find( <query>, <projection> ): selects documents in a collection or view.

Bài 1. Thêm document vào collection

Tạo tập tin xe.json chứa thông tin của xe như hình bên dưới. Thơng tin mỗi xe gồm có: mã xe, tên, năm sản xuất, giá, hình ảnh, loại xe. Trong đó, loại xe chứa thông tin về mã loại và tên loại.

Thực hiện đưa dữ liệu từ tập tin xe.json vào CSDL với tên database là qlXe, tên collection là thongTinXe. Dùng lệnh insertOne() để chèn thêm document tuỳ ý vào collection. Xem kết quả bằng lệnh find().

Bài 2. Cài đặt ràng buộc buộc dữ liệu (document validate)

1. Cài đặt validate rule cho collection thongTinXe: giá của xe “Honda” từ 15 triệu đến 50 triệu. a. Thêm document sau vào thongtinXe và cho nhận xét:

{ma: 'HD005', ten: 'Honda', namsx: 2015, gia: 12000000, hinhanh: 'h5.jpg', loai:{maloai: '002Xemay', tenloai: 'Xe máy'}

b. Thêm document sau vào thongtinXe và cho nhận xét:

<i><b>Mục tiêu: </b></i>

- Th<i>ực hiện các câu truy vấn trên database của MongoDB.</i>

- Thêm, xóa, c<i>ập nhật documents trong collection.</i>

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

Tuần 2-3-4. CRUD Operations

6 {ma: 'HD005', ten: 'Honda', namsx: 2015, gia: 18000000, hinhanh: 'h5.jpg', loai:{maloai: '002Xemay', tenloai: 'Xe máy'}

2. Cài đặt validate rule cho collection thongTinXe: năm sản xuất của xe là sau năm 2000. a. Thêm document sau vào thongtinXe và cho nhận xét:

b. Tắt validate rule trên trường năm sản xuất, thực hiện thêm lại document trên vào và cho nhận xét. c. Thêm documment sau vào thongTinXe và cho nhận xét:

{"ma":"Hd001","hang":"Honda","namsx":1990,"gia":5000000,"hinhanh":"h1.jpg","loai":{"maloai":"002 Xemay","tenloai":"Xe gắn máy"}, cuahang:["Cong Hoa", "An Thanh", "Phat Tien"]}.

d. Tắt hết tất cả các validate rule có trong thongTinXe.

e. Chèn lại document ở trên vào thongTinXe và cho nhận xét.

Bài 3. Truy vấn collection xe

Thực hiện đưa dữ liệu từ file xe.bson (cho sẵn) vào collection xe, viết các truy vấn sau: 1. Xuất toàn bộ danh sách xe máy.

2. Xuất danh sách xe ô tô.

3. Xuất danh sách xe máy Yamaha. 4. Xuất danh sách xe máy Honda.

5. Xuất danh sách xe máy Yamaha sản xuất năm 1992. 6. Xuất danh sách xe máy Honda có giá từ 15.000.000 trở lên. 7. Xuất ra các danh sách các xe có năm sản xuất là 1999. 8. Xuất ra danh sách xe ô tô sản xuất từ năm 2000. 9. Đếm có bao nhiêu xe có năm sản xuất 1992.

10. Xuất ra các xe có giá trên 25.000.000 dưới 655.000.000. 11. Xuất ra tên và giá của tất cả xe ‘Yamaha’.

Bài 4. Truy vấn collection restaurants

Sử dụng file restaurants.bson đưa dữ liệu vào MongoDB, thực hiện các truy vấn theo yêu cầu.

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

Tuần 2-3-4. CRUD Operations

7 {date: ISODate("2014-04-16T00:00:00.000Z"), grade: 'A', score: 5},

{date: ISODate("2013-04-23T00:00:00.000Z"), grade: 'A', score: 2}, {date: ISODate("2012-04-24T00:00:00.000Z"), grade: 'A', score: 5}, {date: ISODate("2011-12-16T00:00:00.000Z"), grade: 'A', score: 2}

2. Hiển thị tất cả các document, nhưng chỉ xuất các field _id, restaurant_id, name, borough và cuisine. 3. Hiển thị tất cả các document, nhưng chỉ xuất các field restaurant_id, name, borough và zipcode. 4. Hiển thị các document với field borough có giá trị là ‘Bronx’.

5. Hiển thị 5 document đầu tiên với field borough có giá trị là ‘Bronx’.

6. Hiển thị 5 document tiếp theo sau khi bỏ qua 5 document đầu tiên với field borough có giá trị là ‘Bronx’. 7. Hiển thị các document có giá trị score trong field grades > 90.

8. Hiển thị các document có giá trị score trong field grades > 80 và < 100. 9. Hiển thị các document có vĩ độ (trong coord) < -95.754168.

10. Hiển thị các document thoả các điều kiện field cuisine không được là 'American', score của field grade > 70 và vĩ độ < -65.754168.

11. Hiển thị các document thoả các điều kiện field cuisine không được là 'American', score của field grade > 70 và kinh độ < -65.754168.

12. Hiển thị các document thoả các điều kiện field cuisine không được là 'American', giá trị grade của field grades là 'A', và field borough không được là ‘Brooklyn’. Sau đó sắp xếp các document theo thứ tự tăng dần của field cuisine.

13. Hiển thị các document với các field restaurant_id, name, borough, cuisine với name có chứa 3 ký tự bắt đầu là 'Wil'.

14. Hiển thị các document với các field restaurant_id, name, borough, cuisine với name có chứa 3 ký tự cuối cùng là 'ces'.

15. Hiển thị các document với các field restaurant_id, name, borough, cuisine với name có chứa 3 ký tự 'Reg'. 16. Hiển thị các document với borough có giá trị là ‘Bronx’ và cuisine có giá trị là ‘American’ hoặc ‘Chinese’. 17. Hiển thị các document với điều kiện field borough có giá trị ‘Staten Island’, ‘Queens’ hoặc ‘Bronxor Brooklyn’,

và chỉ xuất ra các field restaurant_id, name, borough, cuisine.

18. Hiển thị các document với field borough không được là các giá trị ‘Staten Island’, ‘Queens’ hoặc ‘Bronxor Brooklyn’, và chỉ xuất các field restaurant_id, name, borough, cuisine.

19. Hiển thị các document với giá trị score của field grades không lớn hơn 10, chỉ xuất các field restaurant_id, name, borough, cuisine.

20. Hiển thị các document thoả các điều kiện field cuisine không được là 'American' và ‘Chinese’, hoặc name có chứa 3 ký tự bắt đầu là 'Wil', chỉ xuất các field restaurant_id, name, borough, cuisine.

21. Hiển thị các document thoả các điều kiện field grade = ‘A’, score = 11, date= "2014-08-11T00:00:00Z".

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

Tuần 2-3-4. CRUD Operations

8 22. Hiển thị các document có phần tử thứ 2 của mảng grades có grade là "A", score là 9 và date là

"2014-08-11T00:00:00Z".

Bài 5. Truy vấn collection sinhvien, lop

Cho thông tin sinhvien và lop như sau:

<b>sinhvien (file dsSinhvien.bson) </b>

Thực hiện các câu truy vấn sau:

1. Đếm số sinh viên có điểm trung bình từ 5 trở lên.

2. Đếm số sinh viên có điểm trung bình từ 3.0 đến nhỏ hơn 6.5. 3. Liệt kê danh sách sinh viên khơng có số điện thoại hoặc email. 4. Liệt kê danh sách sinh viên có từ 2 số điện thoại trở lên.

5. Liệt kê danh sách sinh viên có lót chữ “Văn”, không phân biệt chữ hoa chữ thường.

6. Liệt kê danh sách sinh viên có họ tên chứa chữ “Minh”, không phân biệt chữ hoa chữ thường.

Bài 6. Insert/Update/Delete collection xe

Sử dụng collection xe của bài 3 thực hiện các yêu cầu sau: 1. Thêm vào 3 document với các thuộc tính tùy ý.

2. Cập nhật mã loại của ô tô thành ‘001CAR’.

3. Cập nhật năm sản xuất của các xe có tên ”Honda” thành 2000. 4. Cập nhật xe máy Honda có giá thấp nhất 24.000.000.

5. Cập nhật giá xe ơ tơ Ford có giá cao nhất 700.000.000. 6. Tăng giá của tất cả xe Yamaha lên 1.000.000.

7. Cập nhật số lượng của xe Ya004 tăng gấp 3 lần.

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

Tuần 2-3-4. CRUD Operations

9 8. Cập nhật giá của tất cả giá ô tô giảm còn một nửa.

9. Cập nhật giá tăng 20% cho xe máy Honda sản xuất từ năm 1990 cho đến nay. 10. Cập nhật giá của tất cả các xe máy không thuộc hãng Honda lên 5%.

11. Cập nhật thêm thuộc tính số lượng là 12 cho xe Yamaha.

12. Dùng lệnh Update (dùng tham số upset) để thêm một document mới sau vào collection xe.

{"ma": "Hd006", "hang": "Honda", "namsx": 2022, "gia": 150000000, "hinhanh": "h6.jpg", "loai": {"maloai":"001Oto","tenloai":"Ơ tơ"}, cuahang: ["Cong Hoa", "An Thanh", "Phat Tien"]}

13. Thêm field cuaHang là mảng gồm "Thien Long", "Minh Hong Phat", "Phuc Nguyen Phat" cho các document có mã là "Ya001" và "Ya002".

14. Thêm cửa hàng có tên “Hai Anh” vào document có mã là “Ya002”.

15. Hãng Honda mở thêm cửa hàng “Xuan Thi”, thêm cửa hàng này vào tất cả các document của hãng Honda. 16. Xóa cửa hàng “An Thanh” của tất cả các xe thuộc hãng “Honda”.

17. Cập nhật thêm thuộc tính mauxe có giá trị là “black”, “white”, “gold” cho tất cả các xe ô tô.

18. Thêm trường số lượng tồn (soLuongTon) vào tất cả document, với giá trị mặc định cho xe ô tô là 50, xe máy là 100.

19. Cập nhật ngày bán là ngày hiện hành cho tất cả xe Ford có năm sản xuất từ trước năm 2000.

20. Đổi tất cả tên thuộc tính của tất cả các document trong collection Xe sang English (Ví dụ: ten→name, namsx→year, loai →categories, …).

21. Xóa những xe thuộc hãng Yamaha có giá dưới 13 triệu. 22. Xóa những xe máy thuộc hãng Honda có giá 15 triệu. 23. Xóa những xe có bán ở cửa hàng “Xuan Thi”.

24. Xóa những xe Honda có giá thấp nhất. 25. Xóa những xe Ford có giá dưới 600 triệu.

Bài 7. Insert/Update/Delete collection restaurants

Cho thông tin restaurants và zipcode như sau:

grades: [ {date: ISODate("2014-11-24T00:00:00.000Z"), grade: 'Z', score: 20}, {date: ISODate("2013-01-17T00:00:00.000Z"), grade: 'A', score: 13}, {date: ISODate("2012-08-02T00:00:00.000Z"), grade: 'A', score: 13}, {date: ISODate("2011-12-15T00:00:00.000Z"), grade: 'B', score: 25}], name: 'Tov Kosher Kitchen',

</div>

×