1. Trang chủ
  2. » Tất cả

3.day-mongodb-co ban

50 6 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tổng Quan Về Mongodb
Thể loại Tài Liệu
Định dạng
Số trang 50
Dung lượng 2,25 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Document có các lược đồ động có nghĩa là các document trong cùng một collection không cần phải có cùng một tập hợp các field hoặc structure và các field phổ biến trong document của colle

Trang 1

MongoDB là một cơ sở dữ liệu nền tảng chéo, tài liệu cung cấp, hiệu suất cao, tính sẵn sàng cao và khả năng mở rộng dễ dàng MongoDB làm việc trên khái niệm về collection và document.

Database: là một vùng chứa vật lý cho các bộ sưu tập Mỗi cơ sở

dữ liệu đều có tập các tệp riêng trên hệ thống tệp Một máy chủ MongoDB đơn thường có nhiều cơ sở dữ liệu.

Collection: Bộ sưu tập các tài liệu MongoDB Nó tương đương với

một table Một collection tồn tại trong một cơ sở dữ liệu đơn Các collection không thực thi lược đồ (schema) Các document trong collection có thể có các field khác nhau Thông thường, tất cả document trong collection đều có mục đích tương tự hoặc có liên quan.

Document: là tập hợp các cặp key-value Document có các lược

đồ động có nghĩa là các document trong cùng một collection không cần phải có cùng một tập hợp các field hoặc structure và các field phổ biến trong document của collection có thể chứa các loại dữ liệu khác nhau.

Tổng quan về MongoDB

Trang 2

Bảng sau đây cho thấy mối quan hệ của thuật ngữ RDBMSvới MongoDB.

Primary Key Primary Key (Default key _id provided by

mongodb itself)

Database Server and Client

Trang 3

Ví dụ về Document

Ví dụ sau đây cho thấy cấu trúc document của một trang blog, mà chỉ đơn giản là một cặp giá trị khóa được phân tách bằng dấu phẩy { _id : ObjectId ( 7df78ad8902c )

title : 'MongoDB Overview’ ,

description : 'MongoDB is no sql database’ ,

by : 'tutorials point’ ,

url : 'http://www.tutorialspoint.com’ ,

tags : ['mongodb', 'database', 'NoSQL’],

likes : 100 ,

comments : [ { user :'user1’ ,

message : 'My first comment’ ,

dateCreated : new Date ( 2011 , 1 , 20 , 2 , 15 ),

like : 0 }, { user :'user2’ ,

message : 'My second comments’ ,

dateCreated : new Date ( 2011 , 1 , 25 , 7 , 45 ),

like : 5 } ]

} _id là số thập lục phân 12 byte, đảm bảo tính duy nhất của mọi tài liệu Bạn cóthể cung cấp _id trong khi chèn tài liệu Nếu bạn không cung cấp thì MongoDB

cung cấp một id duy nhất cho mọi tài liệu Trong 12 byte thì 4 byte cho dấu thời gian hiện tại, 3 byte tiếp theo cho id máy, 2 byte tiếp theo cho quá trình id của máy chủ MongoDB và 3 byte còn lại là VALUE gia tăng đơn giản.

Trang 4

Ưu điểm của MongoDB

Bất kỳ cơ sở dữ liệu quan hệ nào có thiết kế lược đồ điển hình để cho thấy số lượng bảng và mối quan hệ giữa các bảng này Trong MongoDB, không có khái niệm về mối quan hệ.

Ưu điểm của MongoDB trên RDBMS

• Giản đồ ít hơn - MongoDB là một cơ sở dữ liệu tài liệu trong đó

một bộ sưu tập chứa các tài liệu khác nhau Số lượng các field, nội dung và kích thước của tài liệu có thể khác nhau giữa mỗi tài liệu.

• Cấu trúc của một đối tượng đơn là rõ ràng.

• Không có phép kết (join) phức tạp.

• Khả năng truy vấn sâu MongoDB hỗ trợ các truy vấn động trên các document bằng cách dung ngôn ngữ truy vấn dựa trên tài liệu gần như là mạnh mẽ như SQL.

• Có thể tinh chỉnh.

• Dễ dàng mở rộng quy mô - MongoDB dễ dàng mở rộng.

• Chuyển đổi / ánh xạ các đối tượng ứng dụng đến các đối tượng cơ

sở dữ liệu không cần thiết.

• Sử dụng bộ nhớ trong để lưu trữ bộ làm việc (có cửa sổ), cho phép truy cập dữ liệu nhanh hơn.

Trang 5

Tại sao sử dụng MongoDB?

• Lưu trữ theo định hướng tài liệu - Dữ liệu được lưu trữ

dưới dạng tài liệu kiểu JSON

• Chỉ mục trên bất kỳ thuộc tính nào

• Nhân rộng và tính khả dụng cao

• Tự động sao lưu qua nhiều thiết bị khi kích thước tăng

• Truy vấn phong phú

• Cập nhật thay thế nhanh

• Có nhiều hỗ trợ về chuyên môn

Nơi nào sử dụng MongoDB?

• Dữ liệu lớn

• Quản lý và phân phối nội dung

• Cơ sở hạ tầng di động và xã hội

• Quản lý dữ liệu người dùng

• Trung tâm dữ liệu

Trang 6

Môi trường MongoDB

Để cài đặt MongoDB trên Windows, trước tiên hãy tảixuống bản phát hành mới nhất của MongoDB từ

https://www.mongodb.org/downloads

MongoDB yêu cầu một thư mục dữ liệu để lưu trữ các tệpcủa nó Vị trí mặc định cho thư mục dữ liệu MongoDB là

c:\data\db Vì vậy, bạn cần tạo thư mục này bằng

Command Prompt Thực thi chuỗi lệnh sau

C:\>md data C:\md data\db

Trang 7

Nếu phải cài đặt MongoDB ở một vị trí khác, thì cần chỉ

định một đường dẫn thay thế cho \data\db bằng cách thiết lập đường dẫn dbpath trong mongod.exe Ví dụ ta tạo

đường dẫn tại nơi khác như sau Giả sử thư mục cài đặt

là D:\set up\mongodb

C:\Users\XYZ>d:

D:\>cd "set up"

D:\set up>cd mongodb

D:\set up\mongodb>cd bin

D:\set up\mongodb\bin>mongod.exe dbpath "d:\set up\mongodb\data"

Máy sẽ hiển thị thông báo waiting for connections, cho biết

rằng quá trình mongod.exe đang chạy thành công

Bây giờ để chạy MongoDB, bạn cần mở một dấu nhắc lệnhkhác và đưa ra lệnh sau đây

D:\set up\mongodb\bin>mongo.exe

Trang 8

D:\set up\mongodb\bin>mongo.exe

MongoDB shell version: 2.4.6

connecting to: test

Trang 9

hiển thị trong ảnh chụp màn hình.

Trang 10

Thống kê MongoDB

Để có được số liệu thống kê về máy chủ MongoDB, gõ

lệnh db.stats () trong máy khách MongoDB Điều này sẽ

hiển thị tên cơ sở dữ liệu, số lượng bộ sưu tập (collection)

và tài liệu (documents) trong cơ sở dữ liệu Đầu ra của lệnhđược hiển thị trong ảnh chụp màn hình sau đây

Trang 11

Mô hình hóa dữ liệu-MongoDB

Dữ liệu trong MongoDB có một schema.documents linh hoạt trong cùng một bộ sưu tập Chúng không cần phải có cùng một tập các trường (field) hoặc cấu trúc (structure) và các field phổ biến có thể chứa các loại dữ liệu khác nhau.

Một số cân nhắc khi thiết kế Schema trong MongoDB

• Thiết kế lược đồ của bạn theo yêu cầu của người dùng.

• Kết hợp các đối tượng vào một tài liệu nếu sử dụng chúng cùng nhau Nếu không thì tách chúng ra (nhưng chắc chắn không cần phải kết-join).

• Sao chép dữ liệu (nhưng giới hạn) vì không gian đĩa có giá rẻ

so với thời gian tính toán.

• Thực hiện kết trong khi ghi-write, không phải đọc-read.

• Tối ưu hóa lược đồ cho các trường hợp dùng thường xuyên nhất.

• Thực hiện phép gom nhóm phức tạp trong lược đồ.

Trang 12

Thí dụ: Giả sử một khách hàng cần thiết kế cơ sở dữ liệu cho blog/trang web của mình và thấy sự khác biệt giữa thiết kế lược đồ RDBMS và MongoDB Website có các yêu cầu sau.

• Mỗi bài đăng (post) có tiêu đề, mô tả và url duy nhất.

• Mỗi bài đăng có thể có một hoặc nhiều thẻ.

• Mỗi bài đăng có tên của nhà xuất bản và tổng số lượt thích.

• Mỗi bài đăng đều có nhận xét do người dùng đưa ra cùng với tên, thông điệp, dữ liệu thời gian và số lượt thích.

• Trên mỗi bài đăng, có thể có không hoặc nhiều nhận xét.

Trong lược đồ RDBMS, thiết kế cho các yêu cầu trên sẽ có tối thiểu

ba bảng.

Trang 13

comments : [ { user : 'COMMENT_BY' , message : TEXT ,

dateCreated : DATE_TIME , like : LIKES }, { user : 'COMMENT_BY' , message : TEXT ,

dateCreated : DATE_TIME , like : LIKES } ]

}

Trong khi trong lược đồ MongoDB, thiết kế sẽ có một tập

hợp-collection bài đăng và cấu trúc sau

Vì vậy, trong khi hiển thị dữ liệu, trong RDBMS ta cần phải join ba bảng và trong MongoDB, dữ liệu sẽ chỉ được hiển thị từ một bộ sưu tập-collection.

Trang 14

kết-MongoDB - Tạo cơ sở dữ liệu

Lệnh use

MongoDB use DATABASE_NAME được sử dụng để tạo cơ

sở dữ liệu Lệnh sẽ tạo một cơ sở dữ liệu mới nếu nó khôngtồn tại, ngược lại nó sẽ trả về cơ sở dữ liệu hiện có

Cú pháp cơ bản là use DATABASE như sau:

use DATABASE_NAME

Thí dụ

Nếu muốn sử dụng một cơ sở dữ liệu với tên <mydb> ,

thì câu lệnh sẽ như sau:

>use mydb

switched to db mydb

Trang 15

Để kiểm tra cơ sở dữ liệu hiện đang sử dụng, ta dùng

Nếu muốn kiểm tra danh sách cơ sở dữ liệu, ta dùng

local 0.78125GB test 0.23012GB

Cơ sở dữ liệu đã tạo (mydb) không có trong danh sách Để

hiển thị cơ sở dữ liệu, thì cần chèn ít nhất một tài document vào đó >db.movie.insert({"name":"tutorials point"})

liệu-> show dbs local 0.78125GB mydb 0.23012GB test 0.23012GB

Trong MongoDB cơ sở dữ liệu mặc định là test Nếu bạn

không tạo bất kỳ cơ sở dữ liệu nào, thì các bộ sưu collection sẽ được lưu trữ trong cơ sở dữ liệu test

Trang 16

tập-MongoDB - Drop Database

Lệnh db.dropDatabase () được dùng để xóa cơ sở dữ liệu hiện

Thao tác này sẽ xóa cơ sở dữ liệu đã chọn Nếu chưa chọn cơ sở

dữ liệu nào, thì nó sẽ xóa cơ sở dữ liệu mặc định là 'test'.

Thí dụ: Đầu tiên, xem danh sách các cơ sở dữ liệu có sẵn bằng

Trang 17

MongoDB - Create Collection

Phương thức createCollection ()

Dùng lệnh db.createCollection (name, options) để tạo bộ

sưu tập Cú pháp cơ bản như sau:

db.createCollection(name, options)

Trong lệnh, name là tên của bộ sưu tập được tạo

ra Options là tài liệu-document và được dùng để chỉ định

cấu hình của bộ sưu tập-collection.

Options Document (Tùy chọn) Chỉ định các tùy chọn về

kích thước bộ nhớ và lập chỉ mục

Trang 18

Tham số Options là tùy chọn, vì vậy chỉ cần chỉ định tên của

collection Sau đây là danh sách các tùy chọn có thể sử dụng

capped Boolean

(Tùy chọn) Nếu đúng, bộ sưu tập có giới hạn Capped collection là một collection kích thước cố định tự động ghi đè các mục cũ nhất của

nó khi nó đạt đến kích thước tối đa Nếu chỉ định

đúng, ta cũng cần chỉ định tham số kích thước.

autoIndexId Boolean (Tùy chọn) Nếu đúng, tự động tạo chỉ mục trên

trường _id Giá trị mặc định là false.

size number

(Tùy chọn) Chỉ định kích thước tối đa tính bằng

byte cho capped collection Nếu capped là true,

thì bạn cũng cần phải xác định field này.

max number (Tùy chọn) Chỉ định số lượng document tối đa

được phép trong capped collection.

Trong khi chèn document, đầu tiên MongoDB kiểm tra kích thước field của capped collection, sau đó nó kiểm tra field tối đa.

Trang 19

Ví dụ: Cú pháp cơ bản của phương thức createCollection

() không option như sau: >use test

switched to db test

> db createCollection ( "mycollection" ) { "ok" : 1 }

>

Ta có thể kiểm tra collection đã tạo bằng cách dùng lệnh

show collections >show collections

mycollection system indexes

Ví dụ sau đây cho thấy cú pháp của phương

thức createCollection () với một số option quan trọng

-> db createCollection ( "mycol" , { capped : true , autoIndexId : true ,

size : 6142800 , max : 10000 } ) { "ok" : 1 } >

Trang 20

Trong MongoDB, bạn không cần tạo collection MongoDB

tự động tạo collection, khi bạn chèn một số document

>db.tutorialspoint.insert({"name" : "tutorialspoint"})

Trang 21

MongoDB - Drop Collection

Ta dùng p hương thức drop () để xóa collection

Thí dụ: Đầu tiên, kiểm tra các collection có sẵn trong cơ sở

dữ liệu mydb không.

Trang 22

MongoDB - Datatypes

• String (Chuỗi) - Đây là kiểu dữ liệu được sử dụng phổ biến nhất để

lưu trữ dữ liệu String trong MongoDB phải là UTF-8 hợp lệ.

• Integer (Số nguyên) - kiểu này được sử dụng để lưu trữ giá trị

số Số nguyên có thể là 32 bit hoặc 64 bit tùy thuộc vào máy chủ.

• Boolean - Kiểu này được sử dụng để lưu trữ một giá trị boolean

• Arrays (Mảng) - Loại này được sử dụng để lưu trữ các mảng hoặc

danh sách hoặc nhiều giá trị vào một khóa.

• Timestamp (Dấu thời gian) - loại này hữu ích dùng ghi nhận khi

một tài liệu đã được sửa đổi hoặc thêm vào.

• Object (Đối tượng) - Kiểu dữ liệu này được sử dụng cho các tài

liệu được nhúng.

Trang 23

MongoDB – Datatypes (t.t)

• Null - Kiểu này được sử dụng để lưu trữ một giá trị Null.

• Symbol - Kiểu dữ liệu này được sử dụng giống hệt string; tuy

nhiên, nó thường được dành riêng cho các ngôn ngữ sử dụng một loại ký hiệu cụ thể.

• Date - Kiểu dữ liệu này được sử dụng để lưu trữ ngày hoặc

giờ hiện tại theo định dạng thời gian UNIX Bạn có thể chỉ định thời gian ngày của riêng bạn bằng cách tạo đối tượng Date và truyền ngày, tháng, năm vào nó.

• Object ID - Kiểu dữ liệu này được sử dụng để lưu trữ ID của

document.

• Binary data - Kiểu dữ liệu này được sử dụng để lưu trữ dữ

liệu nhị phân.

• Code (Mã) - Kiểu dữ liệu này được sử dụng để lưu mã

JavaScript vào document.

• Regular expression (Biểu thức thông dụng) - Kiểu dữ liệu này

được sử dụng để lưu trữ biểu thức.

Trang 24

MongoDB - Insert Document

Phương thức insert () hoặc save () dùng để chèn documentvào collection Cú pháp cơ bản như sau:

>db.COLLECTION_NAME.insert(document)

> db mycol insert ({ _id : ObjectId ( 7df78ad8902c ),

title : 'MongoDB Overview’ ,

description : 'MongoDB is no sql database’ ,

Ở đây mycol là tên collection Nếu collection không tồn tại

trong cơ sở dữ liệu, thì MongoDB sẽ tạo collection này vàsau đó chèn một document vào nó Trong document đượcchèn vào, nếu không chỉ định tham số _id, thì MongoDBgán một ObjectId duy nhất cho document này

Trang 25

_id là số thập lục phân 12 byte duy nhất cho mọi documenttrong collection 12 byte được chia như sau:

_id: ObjectId(4 bytes timestamp, 3 bytes machine id,

2 bytes process id, 3 bytes incrementer)

Để chèn nhiều document trong một truy vấn, ta có thểchuyển một mảng các document vào lệnh insert ()

Thí dụ

Trang 26

> db post insert (

[ { title : 'MongoDB Overview’ ,

description : 'MongoDB is no sql database’ ,

by : 'tutorials point' , url : 'http://www.tutorialspoint.com’ ,

tags : [ 'mongodb' , 'database' , 'NoSQL' ], likes : 100 }, { title : 'NoSQL Database’ ,

description : "NoSQL database doesn't have tables" ,

by : 'tutorials point' , url : 'http://www.tutorialspoint.com’ ,

tags : [ 'mongodb' , 'database' , 'NoSQL' ], likes : 20 ,

comments : [ { user : 'user1' , message : 'My first comment’ ,

dateCreated : new Date ( 2013 , 11 , 10 , 2 , 35 ),

like : 0 } ] } ]

)

Để chèn document, ta cũng có thể sử dụng db.post.save

(document) Nếu không chỉ định _id trong document thì phương

thức save () sẽ hoạt động giống như phương thức insert () Nếu

chỉ định _id thì nó sẽ thay thế toàn bộ dữ liệu của document chứa _id như được chỉ định trong phương thức save ().

Trang 27

MongoDB - Query Document

Chúng ta tìm hiểu cách truy vấn document từ collection MongoDB.

Phương thức find () sẽ hiển thị tất cả các tài liệu theo cách không có

> db mycol find () pretty () { "_id" : ObjectId ( 7df78ad8902c ),

"title" : "MongoDB Overview" ,

"description" : "MongoDB is no sql database" ,

"by" : "tutorials point" ,

Trang 28

Truy vấn theo điều kiện (giống where trong RDBMS)

Để truy vấn document dựa trên một số điều kiện cơ sở như sau.

bằng

{<key>:{$gte:<value>}} db.mycol.find({"likes":{$gte:50}}).pretty() where

likes >= 50 Không bằng {<key>:{$ne:<value>}} db.mycol.find({"likes":{$ne:50}}).pretty() where

likes != 50

Trang 29

Phép AND trong MongoDB

Cú pháp:

Trong phương thức find () , nếu truyền nhiều khóa tách nhau bởi dấu ',' thì MongoDB xử lý nó bằng điều kiện AND Sau đây là

cú pháp cơ bản của AND

->db.mycol.find( { $and: [ {key1: value1}, {key2:value2} ] } ).pretty()

Ví dụ sau sẽ hiển thị tất cả các tutorials được viết bởi ' tutorials point' và có tiêu đề là ' MongoDB Overview'.

> db mycol find ({ $and :[{ "by" : "tutorials point" },{ "title" : "MongoDB Overview" }]}) pretty ()

{

"_id" : ObjectId ( 7df78ad8902c ), "title" : "MongoDB Overview" ,

"description" : "MongoDB is no sql database" , "by" : "tutorials point" ,

"url" : "http://www.tutorialspoint.com" ,

"tags" : [ "mongodb" , "database" , "NoSQL" ], "likes" : "100"

}

Đối với ví dụ ở trên, tương đương mệnh đề where là "where by =

'tutorials point' AND title='MongoDB Overview’ Ta cũng có thể

truyền bất kỳ số cặp khóa, giá trị nào vào trong mệnh đề find.

Ngày đăng: 12/08/2021, 10:01

w