Đăng nhập mongodb với tên người dùng và mật khẩu [cơ sở dữ liệu mongo]
Phép chiếu trong MongoDB [trường/cột CHỌN trong MongoDB]
Sắp xếp trong MongoDB[orderBy, sorting[] trong MongoDB]
Ưu nhược điểm của MongoDB, khi nào nên sử dụng MongoDB
db.COLLECTION_NAME.find[{condition},{field1:1,field2:0,...}]
Delete the column, field, field of collections in MongoDB [$unset]
- Check tra null, check tồn tại trong MongoDB với $exists
- Đổi tên trường trong MongoDB với $rename
- Tạo người dùng/vai trò, phân quyền người dùng trên MongoDB
Các loại role, vai trò, quyền trong MongoDB
{'_id':'1', 'name':'neymar', 'country':'brazil', 'age':25}, {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':25}, {'_id':'3', 'name':'mbappe', 'country':'france', 'age':18}, {'_id':'4', 'name':'modric', 'country':'croatia', 'age':30}, {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':33},
Đăng nhập mongodb với tên người dùng và mật khẩu [cơ sở dữ liệu mongo] hiển thị tên của tất cả các tài liệu thì câu lệnh sẽ là
db.player.find[{},{'name':1}]
Tạo Replica Set trong MongoDB, Ví dụ Replica Set MongoDB
SELECT _id, name FROM player
Replication, Replica Set trong MongoDB là gì?
Phân trang trong MongoDB [skip[], limit[] phân trang trong MongoDB]
Mặc định, khi truy vấn trong MongoDB [
db.player.find[{'age':25},{'name':1, '_id':0}]6] kết quả trả về sẽ bao gồm tất cả các trường trong tài liệu. Để giới hạn lượng dữ liệu mà MongoDB gửi tới ứng dụng, bạn có thể sử dụng phép chiếu để chỉ rõ trường nào được trả về, trường nào không được trả về khi truy vấn
cú pháp
db.player.find[{'age':25},{'name':1, '_id':0}]
Tạo Replica Set trong MongoDB, Ví dụ Replica Set MongoDB
SELECT name FROM player WHERE age = 25
Replication, Replica Set trong MongoDB là gì?
Bảng dưới đây cho thấy mối quan hệ của các thuật ngữ RDBMS với MongoDB
Một số điều cần cân nhắc khi thiết kế lược đồ trong MongoDB
Thiết kế lược đồ dựa trên 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 bạn sử dụng chúng với nhau. Nếu không thì tách riêng Chắc chắn nó ra [nhưng cần phải chú ý là sau này nó sẽ không tham gia]
Sao chép dữ liệu [nhưng có giới hạn] do không gian đĩa quá rẻ nên với tốc độ xử lý
tham gia khi viết, không tham gia khi đọc
Lược đồ tối ưu cho hầu hết các trường hợp sử dụng thông thường
Tập hợp các nhóm phức tạp vào lược đồ
Ví dụ
Giả sử là một khách hàng cần DB thiết kế cho blog của anh ta và cân nhắc sự khác biệt giữa lược đồ RDMS và MongoDB. Web will have the following request
- Mọi bài đăng đều có tiêu đề, mô tả và url duy nhất
- Mọi bài đăng có thể có 1 hoặc nhiều thẻ
- Mọi bài đăng đều có tên của nhà xuất bản và số lượng người xem thích
- Mọi bài đăng đều có nhận xét trả lời một người dùng với tên, thông báo, thời gian dữ liệu và lượt thích
- Mỗi bài đăng có thể có 0 hoặc nhiều bình luận
Trong lược đồ thiết kế của RDBMS, chúng ta sẽ có như sau về bài đăng, nhận xét và thẻ
Trong khi thiết kế lược đồ MongoDB sẽ có một bài đăng bộ sưu tập và có cấu trúc sau
Trong khi đó ở MongoDB schema, chúng ta sẽ thiết kế một collection post và có cấu trúc như sau
{
_id: POST_ID
title: TITLE_OF_POST,
description: POST_DESCRIPTION,
by: POST_BY,
url: URL_OF_POST,
tags: [TAG1, TAG2, TAG3],
likes: TOTAL_LIKES,
comments: [
{
user:'COMMENT_BY',
message: TEXT,
dateCreated: DATE_TIME,
like: LIKES
},
{
user:'COMMENT_BY',
message: TEXT,
dateCreated: DATE_TIME,
like: LIKES
}
]
}
Để hiển thị 1 bài đăng RDBMS cần phải tham gia 3 bảng trong khi MongoDB chỉ cần lấy ra từ một bộ sưu tập. Nói đến đây nhiều bạn chú ý đừng thần tượng MongoDB quá nhé. Tháng sau mình sẽ viết 1 bài về so sánh hiệu năng với hàng triệu bản ghi giữa MySQL và NoSQL
MongoDB - Tạo/xóa cơ sở dữ liệu
Một số lệnh liên quan đến Cơ sở dữ liệu
________số 8Ví dụ
>use duongdb
switched to db duongdb
Kiểm tra đang sử dụng DB nào
{'_id':'1', 'name':'neymar', 'country':'brazil', 'age':25}, {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':25}, {'_id':'3', 'name':'mbappe', 'country':'france', 'age':18}, {'_id':'4', 'name':'modric', 'country':'croatia', 'age':30}, {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':33},0
hiển thị danh sách các DB trong máy chủ
{'_id':'1', 'name':'neymar', 'country':'brazil', 'age':25}, {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':25}, {'_id':'3', 'name':'mbappe', 'country':'france', 'age':18}, {'_id':'4', 'name':'modric', 'country':'croatia', 'age':30}, {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':33},0
DB của bạn vừa tạo mới ko có ở đây. bạn phải chèn một tài liệu về nó vào danh sách
{'_id':'1', 'name':'neymar', 'country':'brazil', 'age':25}, {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':25}, {'_id':'3', 'name':'mbappe', 'country':'france', 'age':18}, {'_id':'4', 'name':'modric', 'country':'croatia', 'age':30}, {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':33},1
Thả DB
{'_id':'1', 'name':'neymar', 'country':'brazil', 'age':25}, {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':25}, {'_id':'3', 'name':'mbappe', 'country':'france', 'age':18}, {'_id':'4', 'name':'modric', 'country':'croatia', 'age':30}, {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':33},2
MongoDB - Tạo/Xóa bộ sưu tập
Dưới đây là cú pháp để tạo một Bộ sưu tập
{'_id':'1', 'name':'neymar', 'country':'brazil', 'age':25}, {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':25}, {'_id':'3', 'name':'mbappe', 'country':'france', 'age':18}, {'_id':'4', 'name':'modric', 'country':'croatia', 'age':30}, {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':33},3
SELECT name FROM player WHERE age = 254 thì will request must be a string. Trong khi mục_______65 đó chứa khá nhiều thông số về. ________ 66,________ 67,________ 68,________ 69.
SELECT name FROM player WHERE age = 256 là một tập hợp các bộ sưu tập có kích thước cố định và tự động viết tiêu đề lên các mục cũ của nó khi chạm đến kích thước tối đa. Nếu bạn cho nó đúng, thì bạn phải điền
SELECT name FROM player WHERE age = 258 với lại
SELECT name FROM player WHERE age = 259
SELECT name FROM player WHERE age = 257 sẽ tự động tạo một chỉ mục trên biến
{
_id: POST_ID
title: TITLE_OF_POST,
description: POST_DESCRIPTION,
by: POST_BY,
url: URL_OF_POST,
tags: [TAG1, TAG2, TAG3],
likes: TOTAL_LIKES,
comments: [
{
user:'COMMENT_BY',
message: TEXT,
dateCreated: DATE_TIME,
like: LIKES
},
{
user:'COMMENT_BY',
message: TEXT,
dateCreated: DATE_TIME,
like: LIKES
}
]
}
4 Mặc dù giá trị này là saivà cú pháp để loại bỏ một bộ sưu tập
{'_id':'1', 'name':'neymar', 'country':'brazil', 'age':25}, {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':25}, {'_id':'3', 'name':'mbappe', 'country':'france', 'age':18}, {'_id':'4', 'name':'modric', 'country':'croatia', 'age':30}, {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':33},4
Ví dụ nhé
{'_id':'1', 'name':'neymar', 'country':'brazil', 'age':25}, {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':25}, {'_id':'3', 'name':'mbappe', 'country':'france', 'age':18}, {'_id':'4', 'name':'modric', 'country':'croatia', 'age':30}, {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':33},5
Trong MongoDB, bạn không nhất thiết phải tạo bộ sưu tập. This thing will tự động tạo bộ sưu tập cho bạn khi bạn chèn tài liệu
{'_id':'1', 'name':'neymar', 'country':'brazil', 'age':25}, {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':25}, {'_id':'3', 'name':'mbappe', 'country':'france', 'age':18}, {'_id':'4', 'name':'modric', 'country':'croatia', 'age':30}, {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':33},6
Đây là ví dụ drop
{'_id':'1', 'name':'neymar', 'country':'brazil', 'age':25}, {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':25}, {'_id':'3', 'name':'mbappe', 'country':'france', 'age':18}, {'_id':'4', 'name':'modric', 'country':'croatia', 'age':30}, {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':33},7
Data type
- Chuỗi. Chuỗi trong MongoDB phải là UTF-8 hợp lệ
- số nguyên. Số nguyên có thể là 32 bit hoặc 64 bit tùy thuộc vào máy chủ của bạn
- Boolean
- Gấp đôi
- Phím tối thiểu/tối đa. Loại này được sử dụng để so sánh giá trị đối với các yếu tố thấp nhất và cao nhất BSON
- Mảng
- dấu thời gian
- Mục tiêu
- Vô giá trị
- Biểu tượng
- Ngày
- ID đối tượng
- Dữ liệu nhị phân
- Mã số
- Biểu hiện thông thường
MongoDB - Tài liệu
Chèn một tài liệu
{'_id':'1', 'name':'neymar', 'country':'brazil', 'age':25}, {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':25}, {'_id':'3', 'name':'mbappe', 'country':'france', 'age':18}, {'_id':'4', 'name':'modric', 'country':'croatia', 'age':30}, {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':33},8
Ví dụ
{'_id':'1', 'name':'neymar', 'country':'brazil', 'age':25}, {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':25}, {'_id':'3', 'name':'mbappe', 'country':'france', 'age':18}, {'_id':'4', 'name':'modric', 'country':'croatia', 'age':30}, {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':33},9
Kiểm tra đang sử dụng DB nào
db.player.find[{},{'name':1}]0
hiển thị danh sách các DB trong máy chủ
db.player.find[{},{'name':1}]1
DB của bạn vừa tạo mới ko có ở đây. bạn phải chèn một tài liệu về nó vào danh sách
db.player.find[{},{'name':1}]2
Thả DB
db.player.find[{},{'name':1}]3
MongoDB - Tạo/Xóa bộ sưu tập
db.player.find[{},{'name':1}]4
Dưới đây là cú pháp để tạo một Bộ sưu tập
db.player.find[{},{'name':1}]5
SELECT name FROM player WHERE age = 25
4 thì yêu cầu phải là một chuỗi. Trong khi mục_______65 đó chứa khá nhiều thông số về. ________ 66,________ 67,________ 68,________ 69
db.player.find[{},{'name':1}]6
SELECT name FROM player WHERE age = 256 là một tập hợp các bộ sưu tập có kích thước cố định và tự động viết chủ đề lên các mục cũ của nó khi chạm tới kích thước tối đa. Nếu bạn cho nó đúng, thì bạn phải điền
SELECT name FROM player WHERE age = 258 với lại
SELECT name FROM player WHERE age = 259
db.player.find[{},{'name':1}]7
SELECT name FROM player WHERE age = 257 sẽ tự động tạo ra một chỉ mục trên biến
{
_id: POST_ID
title: TITLE_OF_POST,
description: POST_DESCRIPTION,
by: POST_BY,
url: URL_OF_POST,
tags: [TAG1, TAG2, TAG3],
likes: TOTAL_LIKES,
comments: [
{
user:'COMMENT_BY',
message: TEXT,
dateCreated: DATE_TIME,
like: LIKES
},
{
user:'COMMENT_BY',
message: TEXT,
dateCreated: DATE_TIME,
like: LIKES
}
]
}
4 Mặc dù giá trị này là sai. db.player.find[{},{'name':1}]8
và cú pháp để loại bỏ một bộ sưu tập
db.player.find[{},{'name':1}]9
Ví dụ nhé
SELECT _id, name FROM player0
Trong MongoDB, bạn không nhất thiết phải tạo bộ sưu tập. This thing will tự động tạo bộ sưu tập cho bạn khi bạn chèn tài liệu
Đây là ví dụ drop
SELECT _id, name FROM player1
Data type
SELECT _id, name FROM player2
Chuỗi. Chuỗi trong MongoDB phải là UTF-8 hợp lệ
SELECT _id, name FROM player3
số nguyên. Số nguyên có thể là 32 bit hoặc 64 bit tùy thuộc vào máy chủ của bạn
Boolean
Gấp đôi
Phím tối thiểu/tối đa. Loại này được sử dụng để so sánh giá trị đối với các yếu tố thấp nhất và cao nhất BSON
cú pháp của lệnh tìm kiếm này sẽ là
SELECT _id, name FROM player4
Ví dụ dữ liệu hiện tại của bạn như sau
db.player.find[{},{'name':1}]7
Bạn chỉ cần muốn hiển thị từng tiêu đề thôi. Please do as after
SELECT _id, name FROM player6
It's menu must ko
MongoDB - Bản ghi giới hạn
Để giới hạn số lượng bản ghi trong MongoDB, bạn sẽ sử dụng phương thức limit[]. Limit[] sẽ chấp nhận số lượng bản ghi giới hạn thông qua đối số mà bạn truyền vào. Nó sẽ hiển thị số lượng tài liệu mà bạn muốn hiển thị
SELECT _id, name FROM player7
Sử dụng ví dụ ở Projection ở trên chúng ta có ví dụ sau
SELECT _id, name FROM player8
Ngoài ra, lệnh skip[] cho phép bạn bỏ qua 1 giá trị tài liệu
SELECT _id, name FROM player9
MongoDB - Sắp xếp bản ghi
Để sắp xếp các tài liệu trong MongoDB, bạn phải sử dụng sort[]. sort[] cho pehsp một tài liệu trong chứa các trường theo thứ tự thứ tự. có 2 loại thứ tự, 1 sẽ tương đương với tăng dần và -1 sẽ tương đương với giảm dần
db.player.find[{'age':25},{'name':1, '_id':0}]0
MongoDB - Lập chỉ mục
Index hỗ trợ phân tích một cách hiệu quả các truy vấn. Nếu không có mục duy nhất, MongoDB sẽ phải quét tất cả các tài liệu của bộ sưu tập để chọn ra những tài liệu phù hợp với câu hỏi. Quá trình quét này không hiệu quả và yêu cầu MongoDB xử lý một khối dữ liệu lớn
Chỉ mục là những cấu trúc dữ liệu đặc biệt, được sử dụng để chứa một phần nhỏ của các tập tin dữ liệu một cách dễ dàng để quét. Chỉ số lưu trữ giá trị của một trường cụ thể hoặc thiết lập các trường, sắp xếp theo giá trị của các trường này
db.player.find[{'age':25},{'name':1, '_id':0}]1
Để có thể đánh số nhiều trường, bạn hãy sử dụng
{
_id: POST_ID
title: TITLE_OF_POST,
description: POST_DESCRIPTION,
by: POST_BY,
url: URL_OF_POST,
tags: [TAG1, TAG2, TAG3],
likes: TOTAL_LIKES,
comments: [
{
user:'COMMENT_BY',
message: TEXT,
dateCreated: DATE_TIME,
like: LIKES
},
{
user:'COMMENT_BY',
message: TEXT,
dateCreated: DATE_TIME,
like: LIKES
}
]
}
8db.player.find[{'age':25},{'name':1, '_id':0}]2
At here value 1 and -1 is could show the sorting index
{
_id: POST_ID
title: TITLE_OF_POST,
description: POST_DESCRIPTION,
by: POST_BY,
url: URL_OF_POST,
tags: [TAG1, TAG2, TAG3],
likes: TOTAL_LIKES,
comments: [
{
user:'COMMENT_BY',
message: TEXT,
dateCreated: DATE_TIME,
like: LIKES
},
{
user:'COMMENT_BY',
message: TEXT,
dateCreated: DATE_TIME,
like: LIKES
}
]
}
8 có khá nhiều tham số để bạn có thể tùy chỉnhMongoDB - Tập hợp
Tổng hợp xử lý các bản ghi dữ liệu và trả về kết quả tính toán rồi. Tập hợp sẽ nhóm các giá trị từ nhiều tài liệu khác nhau và có thể tiến hành xử lý rất nhiều nhóm dư liệu để trả về một kết quả đơn lẻ. Xử lý này tương đương với đếm[*] trong SQL
db.player.find[{'age':25},{'name':1, '_id':0}]3
Ví dụ chúng ta có dữ liệu như thế này
db.player.find[{'age':25},{'name':1, '_id':0}]4
Nếu bạn muốn hiển thị có bao nhiêu hướng dẫn được viết bởi mỗi người dùng, bạn sẽ sử dụng
use DATABASE_NAME
0 like after. db.player.find[{'age':25},{'name':1, '_id':0}]5
Tương ứng với câu truy vấn trong SQL sẽ là
use DATABASE_NAME
1. Trong ví dụ ở trên, chúng ta đã nhóm các tài liệu chờ trườnguse DATABASE_NAME
2 và sau đó trên mỗi lần xả by_user tổng giá trị được tăng lênKhái niệm về PIPELINE
Trong lệnh shell UNIX, đường dẫn có nghĩa là khả năng thực hiện một xử lý trên một vài đầu vào và sử dụng các đầu ra như đầu vào cho lệnh toeeps theo. MongoDB cũng hỗ trợ khái niệm tương tự trong tập hợp khung. Sẽ có một tập hợp các giai đoạn có thể xảy ra và mỗi giai đoạn được đánh dấu bằng một nhóm tài liệu như đầu vào và tính toán ra kết quả của nhóm tài liệu đó. Kết quả nào có thể sẽ được chuyển thành đầu vào sử dụng cho giai đoạn tiếp theo
Bài viết sau mình sẽ viết tiếp về những vấn đề nâng cao hơn của MongoDB
MongoDB - Sao chép
Bản sao là khái niệm đồng bộ hóa dữ liệu trên nhiều máy chủ. REplication sẽ cung cấp rất nhiều và tăng tính khả dụng của dữ liệu với nhiều bản sao dữ liệu trên nhiều máy chủ DB, các bản sao bảo đảm cho DB khỏi việc mất dữ liệu trên 1 máy chủ đơn lẻ. Bản sao cũng cho phép bạn có thể khôi phục dữ liệu từ ổ cứng bị lỗi và dịch vụ bị lỗi hoặc gặp sự cố. Với rất nhiều bản sao dữ liệu, bạn có thể tinh chỉnh một bản để phục hồi, báo cáo hoặc sao lưu
In sao lại cần REPLICATION
- Data data an toàn
- Tạo tính năng sẵn sàng cho dữ liệu 24/7
- Khôi phục dữ liệu khỏi lỗi
- Không có thời gian chết khi xảy ra bảo trì
- Tăng khả năng đọc dữ liệu
- Cài đặt bản sao không ảnh hưởng đến ứng dụng
REPILCATION hoạt động như thế nào trong MongoDB
MongoDB sao lưu bản sao bằng cách sử dụng bản sao tập hợp. Một bản sao chính của tập tin hơp là một nhóm các ví dụ
use DATABASE_NAME
3 which has host supply data file chung. Tất cả các trường hợp khác, thứ 2 sẽ được áp dụng xử lý từ trường hợp chính cho nên nó sẽ có tập hợp dữ liệu chung. Bản sao chỉ có một nút chính duy nhất- Bản sao là một tập hợp 2 hoặc nhiều nút
- Trong bản sao tập hợp, một nút là nút chính và phần còn lại là nốt thứ 2
- Tất cả dữ liệu được sao chép từ nút chính sang nút phụ
- Tại một thời điểm bất kỳ bảo trì tự động nào, sẽ có một "cuộc bầu cử" được thiết lập lại để chọn ra nút chính mới
- Sau một lần khôi phục một nút bị lỗi, nó sẽ tham gia lại nhóm bản sao và thực hiện công việc như một ghi chú phụ tiếp theo
MongoDB - Phân mảnh
Sharding là quá trình xử lý lưu trữ bản ghi dữ liệu trên nhiều máy và đây là cách tiếp cận của MongoDB để có thể đáp ứng các yêu cầu về dữ liệu lớn. Khi kích thước của dữ liệu tăng lên, một máy tính đơn lẻ không thể đủ để lưu dữ liệu cũng như cung cấp các xử lý đọc và ghi thông thường. Sharding giải bài toán này bằng cách phóng to theo chiều ngang. Với sharding, bạn có thể sẽ bổ sung thêm máy để hỗ trợ lưu trữ dữ liệu cũng như các yêu cầu về đọc và viết