Trong bài viết này, chúng ta sẽ nói về cách sử dụng cơ sở dữ liệu MongoDB với Node. js. Có một số cách để thực hiện việc này, bao gồm cách tiếp cận phổ biến - sử dụng Thư viện mô hình hóa đối tượng. Mongoose là một ví dụ về thư viện như vậy trong Node. js, tuy nhiên, chúng tôi sẽ sử dụng trình điều khiển MongoDB chính thức cho Node. js
Trong bài viết này, chúng tôi sẽ kết nối với máy chủ MongoDB, tạo tài liệu, truy xuất chúng từ cơ sở dữ liệu và cuối cùng xóa một số
Điều này sẽ được thực hiện thông qua một số tập lệnh, mặc dù bạn thường tích hợp chúng với máy chủ web/ứng dụng thay vì đặt chúng trong tập lệnh độc lập
MongoDB là gì?
MongoDB là một hệ thống quản lý cơ sở dữ liệu hướng tài liệu [DBMS] đa nền tảng [chạy trên nhiều hệ điều hành]. MongoDB cũng là một cơ sở dữ liệu NoSQL, có nghĩa là nó không sử dụng SQL để thực hiện các thao tác trên cơ sở dữ liệu
MongoDB sử dụng các tài liệu có định dạng giống JSON, được gọi là BSON, là mã hóa nhị phân của JSON
Nó được phát triển như một dự án mã nguồn mở bởi MongoDB Inc. theo Giấy phép Công cộng Phía Máy chủ
Node và MongoDB hoạt động rất tốt với nhau, một phần vì Mongo sử dụng công cụ JavaScript được tích hợp trong cơ sở dữ liệu vì JavaScript xử lý tốt các đối tượng JSON
So với các cơ sở dữ liệu khác, chẳng hạn như MySQL, MongoDB nhanh chóng lưu trữ một số loại dữ liệu nhất định và có thể tự động thu nhỏ. Nó rất đơn giản để triển khai và chạy
Với Mongo là cơ sở dữ liệu NoSQL, nó có cách lưu trữ dữ liệu riêng. Dưới đây là một số cấu trúc tạo nên cấu trúc cơ sở dữ liệu
- cơ sở dữ liệu. Vùng chứa chứa một tập hợp các bộ sưu tập
- Bộ sưu tập. Một bộ tài liệu. Điều này tương tự như một bảng trong cơ sở dữ liệu SQL. Tuy nhiên, không giống như cơ sở dữ liệu SQL, một bộ sưu tập không có cấu trúc được thiết lập hoặc các kiểu dữ liệu được định cấu hình trước
- Các tài liệu. Một đối tượng giống như JSON. Điều này tương tự như một hàng trong cơ sở dữ liệu SQL. Một đối tượng JSON cũng có thể chứa các đối tượng con, một mảng, v.v.
- _Tôi. Trường duy nhất bắt buộc trong mọi tài liệu. Nó phân tách tài liệu này với tài liệu khác, vì vậy chúng tôi có thể xác định từng tài liệu một cách độc lập. Nếu giá trị này không được cung cấp, MongoDB sẽ tự động gán một giá trị ngẫu nhiên cho trường
Cấu hình của Dự án
Hãy bắt đầu với dự án và bỏ qua lời nhắc của
$ npm install --save mongodb
3$ npm init -y
Sau đó, hãy cài đặt trình điều khiển MongoDB chính thức
$ npm install --save mongodb
Để thực sự kết nối với cơ sở dữ liệu, bạn cần đảm bảo rằng dịch vụ MongoDB của bạn đang chạy trong nền hoặc máy phát triển của bạn. Chạy lệnh
$ npm install --save mongodb
4 trên dấu nhắc lệnh của bạn để vào trình bao MongoChạy lệnh
$ npm install --save mongodb
5 sẽ hiển thị danh sách các cơ sở dữ liệu hiện tạiBạn có thể thoát trình bao bằng cách chạy lệnh
$ npm install --save mongodb
6Không giống như cơ sở dữ liệu SQL, yêu cầu phải tạo cơ sở dữ liệu trước khi sử dụng - không cần phải tạo cơ sở dữ liệu hoặc bộ sưu tập trước. Chúng sẽ tự động được tạo khi có yêu cầu
Triển khai hoạt động CRUD
Với dự án của chúng tôi được khởi tạo và cài đặt MongoDB, chúng tôi có thể bắt đầu viết một số logic CRUD
Kết nối với cơ sở dữ liệu
Tất nhiên, để sử dụng MongoDB trong code, chúng ta cần import module
const mongodb = require['mongodb'];
Sau đó, hãy khởi tạo một khách hàng
const MongoClient = mongodb.MongoClient;
Khách hàng cần biết nơi kết nối, vì vậy chúng tôi sẽ cung cấp cho họ một
$ npm install --save mongodb
7 và $ npm install --save mongodb
8Cuối cùng, hãy thử kết nối với cơ sở dữ liệu
Nếu bạn đã kết nối thành công với cơ sở dữ liệu, bạn sẽ thấy đầu ra
$ npm init -y
0Nếu không, bạn sẽ được chào đón với một thông báo lỗi. Kiểm tra xem máy chủ có hoạt động không và nếu tên người dùng và mật khẩu là chính xác trong trường hợp đó
Như bạn có thể thấy trong ví dụ, phương thức
$ npm install --save mongodb
9 nhận hai tham số, URL của cơ sở dữ liệu và hàm gọi lạiHàm gọi lại có hai tham số.
const mongodb = require['mongodb'];
0 và const mongodb = require['mongodb'];
1Tham số đầu tiên sẽ chứa lỗi nếu có bất kỳ sự cố mạng nào hoặc bất kỳ sự cố nào khác khi kết nối với cơ sở dữ liệu. Nếu không có vấn đề gì, lỗi sẽ là
const mongodb = require['mongodb'];
2Tham số thứ hai là đối tượng client mà chúng ta sử dụng để tương tác với cơ sở dữ liệu
Thuộc tính
const mongodb = require['mongodb'];
3 của const mongodb = require['mongodb'];
1 chứa tham chiếu đến cơ sở dữ liệu. Để thực hiện bất kỳ hành động nào trên cơ sở dữ liệu đó, chúng tôi sử dụng tài liệu tham khảo nàyTạo một tài liệu
Để thực hiện bất kỳ hành động nào trên cơ sở dữ liệu, rõ ràng là bạn phải kết nối với nó. Với Mongo, có hai cách để chèn tài liệu vào cơ sở dữ liệu. Cách đầu tiên là thêm một tài liệu tại một thời điểm. Chúng ta có thể sử dụng phương pháp
const mongodb = require['mongodb'];
5 để đạt được điều nàyTham số kết quả của cuộc gọi lại chứa thông tin về truy vấn. Nó có một trường tên là
const mongodb = require['mongodb'];
6 trông giống như$ npm init -y
9const mongodb = require['mongodb'];
7 là số lượng tài liệu được chèn vào. const mongodb = require['mongodb'];
8 là trạng thái của lệnhBạn không cần phải tạo rõ ràng cơ sở dữ liệu có tên là
const mongodb = require['mongodb'];
9 hoặc bộ sưu tập có tên là const MongoClient = mongodb.MongoClient;
0 trước khi chèn tài liệu. Cơ sở dữ liệu và bộ sưu tập sẽ được tạo tự độngPhương pháp thứ hai cho phép bạn thêm nhiều tài liệu cùng một lúc. Chúng ta có thể sử dụng phương pháp
const MongoClient = mongodb.MongoClient;
1 để đạt được điều nàyHãy xem hướng dẫn thực hành, thực tế của chúng tôi để học Git, với các phương pháp hay nhất, tiêu chuẩn được ngành chấp nhận và bao gồm bảng gian lận. Dừng các lệnh Git trên Google và thực sự tìm hiểu nó
Chạy đoạn mã này sẽ mang lại
$ npm install --save mongodb
5Vì chúng tôi chưa xác định một
const MongoClient = mongodb.MongoClient;
2 cho một trong hai tài liệu này, nên chúng tôi có thể tìm nạp const MongoClient = mongodb.MongoClient;
2 được chỉ định từ đối tượng const MongoClient = mongodb.MongoClient;
4 nếu chúng tôi cần truy cập vào const MongoClient = mongodb.MongoClient;
2 đã tạoNgoài ra, bạn có thể tự xác định
const MongoClient = mongodb.MongoClient;
2Truy xuất tài liệu
Truy xuất tất cả tài liệuĐầu tiên, hãy xem cách lấy tất cả các tài liệu từ một bộ sưu tập
Chạy đoạn mã này sẽ mang lại cho chúng tôi
$ npm install --save mongodb
1Như bạn có thể thấy trong ví dụ, chúng tôi đã chuyển một đối tượng trống [
const MongoClient = mongodb.MongoClient;
7] làm truy vấnTheo tài liệu, phương thức
const MongoClient = mongodb.MongoClient;
8 trả về một mảng chứa tất cả các tài liệu từ một con trỏ. Phương pháp lặp lại hoàn toàn con trỏ, tải tất cả tài liệu vào RAM và làm cạn kiệt con trỏCác tài liệu được tìm nạp bởi bộ sưu tập sẽ được gán cho tham số
const MongoClient = mongodb.MongoClient;
9 trong hàm gọi lạiTìm tài liệu bằng bộ lọc truy vấnPhương pháp tiếp theo để tìm tài liệu là sử dụng bộ lọc truy vấn. Ví dụ: truy vấn sau đây chọn người dùng có tên đầu tiên là
$ npm init -y
00$ npm install --save mongodb
6Và để làm điều này trong mã
$ npm install --save mongodb
7Mã này sẽ dẫn đến
$ npm install --save mongodb
0Rõ ràng, tất cả các hồ sơ với
$ npm init -y
01 $ npm init -y
00 được trả lạiCập nhật tài liệu
Hoạt động tiếp theo mà chúng ta sẽ nói đến là cập nhật một tài liệu. Để cập nhật một tài liệu, tương tự như truy xuất tài liệu, chúng ta có thể sử dụng phương thức
$ npm init -y
03Mã này dẫn đến
$ npm install --save mongodb
1Như bạn có thể thấy trong ví dụ, phương thức
$ npm init -y
03 chấp nhận ba tham số. Cái đầu tiên là bộ lọc truy vấn. Cái thứ hai là các giá trị cập nhật. Cái thứ ba là chức năng gọi lại, chấp nhận lỗi và kết quả dưới dạng tham sốMột lần nữa, kết quả ở đây thông báo cho chúng tôi về trạng thái [
const mongodb = require['mongodb'];
8], số lượng tài liệu được chọn để cập nhật [const mongodb = require['mongodb'];
7] và số lượng tài liệu được cập nhật [$ npm init -y
07]const mongodb = require['mongodb'];
7 có thể lớn hơn $ npm init -y
07, nếu một trường được cập nhật với giá trị mà nó đã cóSử dụng truy vấn này, chúng tôi đã chọn một tài liệu có trường
$ npm init -y
01 là $ npm init -y
00 và chúng tôi đã thay đổi $ npm init -y
92 của tài liệu đó thành $ npm init -y
93. Ngoài ra, chúng tôi đã thêm một trường có tên là $ npm init -y
94 và đặt nó là $ npm init -y
95. Lưu ý cách chúng tôi không cần chỉ định hoặc tuân theo bất kỳ lược đồ nào trong toàn bộ quá trình này. Mongo chỉ chấp nhận bất kỳ dữ liệu nào bạn gửiNếu bạn đang sử dụng phương pháp
$ npm init -y
03, truy vấn sẽ chọn tài liệu đầu tiên có trường phù hợp. Nếu có nhiều tài liệu với một trường có cùng giá trị, sử dụng phương pháp $ npm init -y
97 sẽ cập nhật tất cả chúng, điều mà trong một số trường hợp có thể không phải là điều chúng tôi muốn thực hiệnGhi chú. Nếu bạn đang sử dụng phương pháp
$ npm init -y
03, lý tưởng nhất là truy vấn chỉ chọn một tài liệu duy nhất. Mặt khác, chúng tôi không thể dự đoán tài liệu có thể được cập nhật. Vì vậy, hãy ghi nhớ điều này và thận trọng khi sử dụng bộ lọc truy vấn có thể khớp với nhiều tài liệuChúng ta cũng có thể chỉnh sửa tất cả các tài liệu thỏa mãn điều kiện trường
$ npm init -y
01 là $ npm init -y
00Phương pháp
$ npm init -y
97 tương tự như phương pháp $ npm init -y
03, ngoại trừ nó cập nhật tất cả các tài liệu phù hợp với bộ lọc truy vấnXóa tài liệu
Chúng tôi có thể sử dụng các phương pháp
$ npm install --save mongodb
53 hoặc $ npm install --save mongodb
54 để xóa tài liệu khỏi bộ sưu tậpMã này dẫn đến
$ npm install --save mongodb
2Một lần nữa, theo cách tương tự như các ví dụ trước - tham số được chấp nhận đầu tiên là truy vấn bộ lọc và tham số thứ hai là hàm gọi lại. Hàm gọi lại trả về lỗi hoặc kết quả
Chạy đoạn mã này sẽ xóa tài liệu khớp với truy vấn - trong trường hợp này, tài liệu có trường
$ npm init -y
01 là $ npm init -y
00. Một lần nữa, thao tác này sẽ chỉ xóa tài liệu đầu tiên phù hợp với truy vấnBạn cũng có thể sử dụng phương pháp
$ npm install --save mongodb
57 để xóa tất cả các tài liệu được chọnSự kết luận
MongoDB là một NoSQL phổ biến, cơ sở dữ liệu nhẹ, thực sự dễ triển khai và sử dụng với Node. Chúng tôi đã viết một ứng dụng Node rất đơn giản tương tác với MongoDB để tạo, truy xuất và xóa các bộ sưu tập