Trong bài đăng này, chúng tôi sẽ xem xét tất cả các khái niệm quan trọng của MongoDB và xem cách nó có thể giúp các nhà phát triển của chúng tôi cung cấp các sản phẩm tốt hơn và cải thiện trải nghiệm phát triển của chúng tôi
MongoDB là một cơ sở dữ liệu NoSQL lưu trữ dữ liệu trong các tài liệu linh hoạt, giống như JSON, có nghĩa là các trường có thể thay đổi từ tài liệu này sang tài liệu khác và cấu trúc dữ liệu có thể thay đổi theo thời gian
Trong thế giới hiện đại của chúng ta, dữ liệu rất rộng lớn, không có cấu trúc và đôi khi khó sử dụng. Nó có thể trở nên lớn và phức tạp rất nhanh, điều này có thể gây khó khăn cho việc lưu trữ nó trong cơ sở dữ liệu có cấu trúc bảng cố định
Hầu hết các dự án yêu cầu một giải pháp linh hoạt hơn và đó là nơi MongoDB ra đời. JSON linh hoạt của nó giống như các tài liệu cung cấp một cách dễ dàng và hợp lý để lưu trữ dữ liệu và cho phép các nhà phát triển của chúng tôi dễ dàng thay đổi cấu trúc dữ liệu của mình theo thời gian
Trong bài đăng này, chúng tôi sẽ xem xét các khái niệm quan trọng của MongoDB và xem cách nó có thể giúp các nhà phát triển của chúng tôi cung cấp các sản phẩm tốt hơn và cải thiện trải nghiệm phát triển của chúng tôi
SQL so với NoQuery
Trước khi tìm hiểu lý do tại sao chúng ta nên chọn MongoDB thay vì các cơ sở dữ liệu khác, trước tiên bạn nên hiểu rõ về sự khác biệt giữa cơ sở dữ liệu SQL và NoSQL
Cấu trúc
Cơ sở dữ liệu SQL sử dụng ngôn ngữ truy vấn có cấu trúc để xác định và thao tác dữ liệu của chúng. Chúng dựa trên bảng khiến chúng rất mạnh mẽ và là lựa chọn tuyệt vời cho các truy vấn phức tạp nhưng mặt khác, cũng có thể rất hạn chế. SQL yêu cầu sử dụng các lược đồ được xác định trước để xác định cấu trúc dữ liệu của chúng tôi, điều này có thể gây khó khăn cho việc thay đổi và duy trì cấu trúc dữ liệu theo thời gian
Mặt khác, NoSQL có các lược đồ động của dữ liệu phi cấu trúc và là tài liệu thứ tám, khóa-giá trị hoặc định hướng biểu đồ. Điều này có nghĩa là các tài liệu có thể được tạo mà không cần xác định lược đồ trước và mỗi tài liệu có thể có cấu trúc độc đáo của riêng nó. Nó cũng cung cấp khả năng dễ dàng thêm các trường khi bạn thực hiện mà không phải lo lắng về lược đồ dữ liệu
Khi nào thì sử dụng cái nào
SQL là một lựa chọn mạnh mẽ cho bất kỳ dự án nào sẽ được hưởng lợi từ cấu trúc dữ liệu được xác định trước và thiết lập các lược đồ. Nó cũng hữu ích nếu tất cả dữ liệu phải có cùng cấu trúc không có chỗ cho lỗi
NoSQL là một lựa chọn tuyệt vời cho các dự án không có định nghĩa lược đồ rõ ràng hoặc các công ty đang có tốc độ tăng trưởng nhanh. NoSQL cung cấp tính linh hoạt hơn nhiều, điều này cũng làm cho nó trở thành một lựa chọn tuyệt vời cho các dự án có nhiều mô hình dữ liệu khác nhau
Bây giờ chúng ta đã biết sự khác biệt chính giữa cơ sở dữ liệu SQL và NoSQL, hãy chuyển sang lý do tại sao chúng ta nên sử dụng MongoDB của tất cả các cơ sở dữ liệu hiện có
Ghi chú. Tôi vừa đưa ra một cái nhìn tổng quan nhanh về sự khác biệt quan trọng nhất giữa cơ sở dữ liệu SQL và NoSQL
Tại sao phải quan tâm đến MongoDB
Bây giờ câu hỏi vẫn là tại sao bạn nên sử dụng MongoDB ngay từ đầu. Dưới đây là một số lý do mà các nhà phát triển nên xem xét việc học và sử dụng MongoDB
Dưới đây là một số lợi ích tuyệt vời mà MongoDB mang lại
- Schemaless [Hướng tài liệu có nghĩa là các tài liệu có thể khác nhau]
- Giúp bạn xử lý một lượng lớn dữ liệu phi cấu trúc
- Dễ dàng mở rộng quy mô
- truy vấn phong phú
- Lập chỉ mục trên bất kỳ thuộc tính nào
- hỗ trợ chuyên nghiệp
Khi nào bạn nên sử dụng nó
Bây giờ chúng ta đã biết tại sao MongoDB lại hữu ích và nó có thể cải thiện các ứng dụng và trải nghiệm phát triển của chúng ta ở đâu. Nhưng nó không phải là giải pháp tốt nhất cho mọi dự án, vì vậy hãy xem nơi bạn chắc chắn nên sử dụng MongoDB
- Khi bạn lưu trữ dữ liệu không có lược đồ
- Khi bạn có một ứng dụng thường thêm các trường dữ liệu
- Khi bạn cần lưu trữ dữ liệu linh hoạt
- Khi bạn muốn mở rộng quy mô lưu trữ của mình theo chiều ngang
Cài đặt
Để thiết lập MongoDB, chúng ta chỉ cần tải bộ cài đặt về và thực hiện. Nếu bạn cần bất kỳ trợ giúp nào trong việc cài đặt MongoDB, tôi chỉ có thể khuyên bạn nên truy cập tài liệu chính thức hoặc bài đăng trên blog này của London App Brewery về việc cài đặt MongoDB trên Windows
Sau khi cài đặt nó, chúng ta có thể xem cách chúng ta có thể sử dụng nó trong các dự án của mình và chức năng CRUD cơ bản
Máy chủ cơ bản
Trước khi chúng ta có thể bắt đầu xem cách chúng ta có thể triển khai chức năng CRUD vào ứng dụng của mình, trước tiên chúng ta cần tạo một máy chủ MongoDB cơ bản
Để làm được điều đó, trước tiên chúng ta cần cài đặt phần phụ thuộc MongoDB trong dự án của mình và có thể làm như vậy bằng trình quản lý gói npm
npm install mongodb --save
Kết nối với MongoDB
Đầu tiên, chúng ta cần yêu cầu gói mongodb mà chúng ta vừa cài đặt và lấy đối tượng MongoClient từ nó
const mongo = require['mongodb'].MongoClient
Sau đó, chúng ta cần tạo một URL đến máy chủ MongoDB. Nếu bạn sử dụng nó cục bộ như tôi đang làm trong bài đăng trên blog này, thì URL sẽ giống như ‘mongodb. //máy chủ cục bộ. 27017’
const url = 'mongodb://localhost:27017'
Chúng tôi cũng cần xác định tên của cơ sở dữ liệu của chúng tôi
const dbName = 'exampleproject'
Sau đó, chúng ta cần sử dụng mongo. connect[] để lấy tham chiếu đến ứng dụng khách MongoDB của chúng tôi
mongo.connect[url, [err, client] => {
if [err] {
console.error[err]
return
}
console.log['Connected successfully to server']
const db = client.db[dbName]
}]
Bây giờ chúng ta đã có cấu trúc cơ bản, hãy xem cách chúng ta có thể triển khai chức năng CRUD vào ứng dụng của mình
chức năng CRUD
Bây giờ, hãy xem cách chúng ta có thể triển khai chức năng CRUD [Tạo, Đọc, Cập nhật, Xóa] cơ bản
Để làm được điều đó, trước tiên chúng ta cần tạo hoặc lấy một bộ sưu tập cơ sở dữ liệu mà chúng ta sẽ làm việc trong đó. Chúng ta có thể làm như vậy bằng cách sử dụng hàm collection[] lấy tên bộ sưu tập làm đối số
const collection = db.collection['collectionname']
Tạo nên
Chúng ta có thể chèn một đối tượng vào cơ sở dữ liệu của mình bằng cách sử dụng hàm insertOne[] do MongoDB cung cấp
collection.insertOne[{ name: 'Test', age: '30' }, [[error, item] => {
if[error] {
console.error[error]
return
}
console.log[item]
}]]
Chúng ta cũng có thể chèn nhiều mục bằng hàm insertMany[]
collection.insertMany[[{name: 'Test', age: '30'}, {name: 'Test2', age: '60'}], [error, result] => {
}]
Đọc
Hàm find[] được sử dụng để lấy tất cả các tài liệu của một bộ sưu tập
________số 8_______Chúng ta cũng có thể truyền đối số cho hàm find[] để chỉ nhận các tài liệu cụ thể
collection.find[{name: 'Gabriel'}].toArray[[error, items] => {
console.log[items]
}]
Nếu chúng ta chỉ muốn lấy một phần tử, chúng ta có thể bỏ qua hàm toArray bằng cách sử dụng findOne[]
const mongo = require['mongodb'].MongoClient
0Cập nhật
Tiếp theo, hãy xem cách chúng ta có thể cập nhật một tài liệu đã tồn tại bằng cách sử dụng hàm updateOne[]
const mongo = require['mongodb'].MongoClient
1Thay vào đó, chúng tôi cũng có thể cập nhật nhiều tài liệu bằng cách sử dụng hàm updateMany[]
const mongo = require['mongodb'].MongoClient
2Xóa bỏ
Bây giờ hãy xem cách chúng tôi có thể xóa tài liệu trong cơ sở dữ liệu của mình
const mongo = require['mongodb'].MongoClient
3Sử dụng hàm deleteOne[] nếu bạn chỉ muốn xóa một tài liệu
const mongo = require['mongodb'].MongoClient
4thiết kế sơ đồ
Thiết kế lược đồ là một phần rất quan trọng của MongoDB và có thể giúp các nhà phát triển chúng tôi xây dựng các ứng dụng nhanh và mạnh mẽ hơn
Những lợi ích chung của việc sử dụng thiết kế lược đồ bao gồm
- Ít ghi vào cơ sở dữ liệu hơn
- Truy vấn đơn giản hơn và nhanh hơn
- Đơn giản hóa thiết kế khi biết trước cấu trúc tài liệu
- Giảm nợ kỹ thuật trong tương lai
Làm thế nào để chúng tôi thiết kế một lược đồ
Trước khi chúng ta có thể bắt đầu xem xét các lược đồ khác nhau, chúng ta cần tự hỏi mình một số câu hỏi về dữ liệu và cấu trúc dữ liệu của chúng ta. Đây là những điều quan trọng nhất
- Các mẫu truy cập dữ liệu của bạn
- Số lần đọc so với cập nhật
- Kích thước của các tài liệu
- Kích thước dữ liệu & chỉ mục
- khả năng mở rộng
Nếu bạn muốn biết thêm về các mẫu lược đồ Mongo, bạn có thể xem video chính thức này từ nhóm MongoDB
Bây giờ chúng ta đã biết các phần quan trọng của thiết kế lược đồ MongoDB, hãy xem cách chúng ta có thể triển khai các lược đồ trong các ứng dụng Nodejs của mình
cầy mangut
Một tính năng tuyệt vời khác thường được sử dụng bên cạnh bản thân Mongo là Mongoose cung cấp giải pháp dựa trên lược đồ đơn giản để mô hình hóa dữ liệu ứng dụng của bạn và giúp xác thực và truyền dễ dàng hơn
Cài đặt Mongoose
Mongoose có thể được cài đặt bằng npm hoặc trình quản lý gói sợi trên toàn cầu hoặc chỉ cho một dự án
const mongo = require['mongodb'].MongoClient
5Kết nối với MongoDB
Sau khi cài đặt phụ thuộc cầy mangut trong dự án của bạn, bạn có thể tiếp tục bằng cách khởi tạo kết nối đến cơ sở dữ liệu MongoDB của mình
const mongo = require['mongodb'].MongoClient
6Bạn cũng có thể thêm một số nhật ký cơ bản để biết kết nối của mình được thiết lập chính xác hay lỗi đã xảy ra
const mongo = require['mongodb'].MongoClient
7Tạo một lược đồ
Mongoose hiện cho phép chúng tôi tạo một lược đồ được xác định trước cho đối tượng cơ sở dữ liệu của chúng tôi giống như bạn sẽ làm với cơ sở dữ liệu SQL truyền thống. Lược đồ ánh xạ tới bộ sưu tập MongoDB và xác định hình dạng của tài liệu trong bộ sưu tập đó
const mongo = require['mongodb'].MongoClient
8Mỗi chìa khóa trong cầy mangut của chúng tôi. Schema[] xác định một thuộc tính trong tài liệu của chúng tôi sẽ được chuyển thành SchemaType được liên kết của nó mà chúng tôi xác định
Bạn có thể xem tài liệu chính thức để có cái nhìn chi tiết hơn về các lược đồ
Tạo một mô hình
Bây giờ chúng ta đã có một lược đồ hoàn chỉnh theo ý của mình, chúng ta có thể tiếp tục biên dịch nó thành một mô hình
const mongo = require['mongodb'].MongoClient
9Mô hình là một lớp được sử dụng để xây dựng các tài liệu cụ thể như bạn sẽ thấy trong bước tiếp theo
Lưu một mục
Mô hình của chúng tôi hiện cho phép chúng tôi tạo một tài liệu cụ thể mà chúng tôi có thể sử dụng trong các hoạt động cơ sở dữ liệu của mình
const url = 'mongodb://localhost:27017'
0Sau khi tạo tài liệu, chúng ta có thể lưu nó bằng hàm save[]
const url = 'mongodb://localhost:27017'
1Tìm kiếm một mục
Tìm kiếm một mục cũng là một quá trình hoàn toàn đơn giản có thể được thực hiện bằng một lệnh duy nhất
Phương thức find[] tìm tất cả các đối tượng trong bộ sưu tập đã cho phù hợp với truy vấn bạn đã truyền cho nó
const url = 'mongodb://localhost:27017'
2Nếu bạn chỉ muốn tìm một mục duy nhất, tôi khuyên bạn nên sử dụng phương thức findOne[] để thay thế
Tập bản đồ Mongodb
MongoDB Atlas là một dịch vụ cơ sở dữ liệu đám mây toàn cầu cho phép bạn triển khai và quản lý các ứng dụng MongoDB trong một Cụm trên AWS, Azure hoặc GCP
Tại sao bạn nên sử dụng Atlas
Dưới đây là danh sách các lý do tại sao bạn nên sử dụng Atlas và nơi nó có thể giúp bạn trong quy trình làm việc của mình
- Nhanh chóng và đơn giản - Atlas không yêu cầu bất kỳ tệp cài đặt hoặc cấu hình nào. Chỉ cần đăng ký, tạo cụm của bạn và bạn đã sẵn sàng
- Cơ sở dữ liệu đám mây - Không cần cài đặt MongoDB trên máy của bạn. Đám mây cũng hữu ích khi chạy ứng dụng của bạn trong các cụm vùng chứa như Kubernetes
- An toàn cho dữ liệu nhạy cảm - Atlas có các biện pháp kiểm soát bảo mật tích hợp cho tất cả dữ liệu của bạn
- Bậc miễn phí tuyệt vời lên tới 512 MB dung lượng lưu trữ
Tôi sẽ không đi sâu hơn vào MongoDB Atlas trong bài viết này. Nếu bạn muốn tìm hiểu cách thiết lập một cụm và kết nối ứng dụng của mình với cụm đó, tôi khuyên bạn nên sử dụng tài liệu chính thức hoặc hướng dẫn này của Lenmor Ld
Phần kết luận
Bạn đã làm tất cả các cách cho đến khi kết thúc. Tôi hy vọng rằng bài viết này đã giúp bạn hiểu những kiến thức cơ bản về MongoDB và cách bạn có thể sử dụng nó trong Javascript
Nếu bạn thấy điều này hữu ích, vui lòng xem xét giới thiệu và chia sẻ nó với các nhà phát triển đồng nghiệp khác. Nếu bạn có bất kỳ câu hỏi hoặc phản hồi nào, hãy cho tôi biết bằng cách sử dụng biểu mẫu liên hệ của tôi hoặc liên hệ với tôi trên twitter