Bây giờ, giả sử chúng tôi thích những chú mèo con lông xù và muốn ghi lại mọi chú mèo con mà chúng tôi từng gặp trong MongoDB. Điều đầu tiên chúng ta cần làm là đưa cầy mangut vào dự án của mình và mở một kết nối đến cơ sở dữ liệu test trên phiên bản MongoDB đang chạy cục bộ của chúng ta
Để cho ngắn gọn, giả sử rằng tất cả các đoạn mã sau nằm trong hàm main()
Với Mongoose, mọi thứ đều bắt nguồn từ Schema. Hãy tham khảo nó và xác định mèo con của chúng ta
const kittySchema = new mongoose.Schema({ name: String });Càng xa càng tốt. Chúng tôi đã có một giản đồ với một thuộc tính, name, sẽ là một const kittySchema = new mongoose.Schema({ name: String }); 0. Bước tiếp theo là biên dịch lược đồ của chúng ta thành một Mô hình
const Kitten = mongoose.model('Kitten', kittySchema);Một mô hình là một lớp mà chúng ta xây dựng các tài liệu. Trong trường hợp này, mỗi tài liệu sẽ là một chú mèo con với các thuộc tính và hành vi như được khai báo trong lược đồ của chúng tôi. Hãy tạo một tài liệu mèo con đại diện cho anh chàng nhỏ bé mà chúng ta vừa gặp trên vỉa hè bên ngoài
Mèo con có thể kêu meo meo, vì vậy hãy xem cách thêm chức năng "nói" vào tài liệu của chúng ta
Các chức năng được thêm vào thuộc tính const kittySchema = new mongoose.Schema({ name: String }); 1 của lược đồ được biên dịch thành nguyên mẫu const kittySchema = new mongoose.Schema({ name: String }); 2 và được hiển thị trên mỗi phiên bản tài liệu
Chúng tôi có những chú mèo con biết nói. Nhưng chúng tôi vẫn chưa lưu bất cứ thứ gì vào MongoDB. Mỗi tài liệu có thể được lưu vào cơ sở dữ liệu bằng cách gọi phương thức của nó. Đối số đầu tiên cho cuộc gọi lại sẽ là một lỗi nếu có xảy ra
await fluffy.save(); fluffy.speak();Giả sử thời gian trôi qua và chúng tôi muốn hiển thị tất cả những chú mèo con mà chúng tôi đã thấy. Chúng tôi có thể truy cập tất cả các tài liệu về mèo con thông qua mô hình Mèo con của chúng tôi
const kittens = await Kitten.find(); console.log(kittens);Chúng tôi vừa đăng nhập tất cả các chú mèo con trong db của mình vào bảng điều khiển. Nếu chúng ta muốn lọc những chú mèo con của mình theo tên, Mongoose hỗ trợ cú pháp truy vấn phong phú của MongoDB
await Kitten.find({ name: /^fluff/ });Điều này thực hiện tìm kiếm tất cả các tài liệu có thuộc tính tên bắt đầu bằng "lông tơ" và trả về kết quả dưới dạng một mảng mèo con cho hàm gọi lại
Đó là kết thúc của khởi đầu nhanh chóng của chúng tôi. Chúng tôi đã tạo lược đồ, thêm phương thức tài liệu tùy chỉnh, lưu và truy vấn mèo con trong MongoDB bằng Mongoose. Đi qua hướng dẫn hoặc tài liệu API để biết thêm
Mô-đun Mongoose là một trong những mô-đun bên ngoài mạnh mẽ nhất của NodeJS. Mongoose là một MongoDB ODM tôi. e (Mô hình hóa cơ sở dữ liệu đối tượng) được sử dụng để dịch mã và biểu diễn của nó từ MongoDB sang Nút. máy chủ js
Ưu điểm của mô-đun Mongoose
- Việc xác thực bộ sưu tập của cơ sở dữ liệu MongoDB có thể được thực hiện dễ dàng
- Cấu trúc được xác định trước có thể được thực hiện trên bộ sưu tập
- Các ràng buộc có thể được áp dụng cho các tài liệu của các bộ sưu tập bằng Mongoose
- Mô-đun Mongoose được xây dựng trên đầu trình điều khiển MongoDB và cung cấp khả năng trừu tượng hóa truy vấn dễ dàng và xác định truy vấn
Nhiều developer có thói quen sử dụng SQL cảm thấy không thoải mái khi làm việc trên MongoDB vì cơ sở dữ liệu Nosql và cấu trúc linh hoạt. Ở đây Mongoose đóng vai trò quan trọng và làm cho lược đồ bộ sưu tập tương tự như cơ sở dữ liệu SQL
Mô-đun Mongoose cung cấp một số chức năng để thao tác với các tài liệu của bộ sưu tập cơ sở dữ liệu MongoDB
Triển khai cho cấu trúc xác định và Xác thực bộ sưu tập. Mô-đun cầy mangut đã áp đặt một cấu trúc nhất định lên bộ sưu tập và làm cho bộ sưu tập trở nên cứng nhắc
Trong vài năm viết mã và xây dựng ứng dụng, tôi đã gặp nhiều trường hợp và cách sử dụng cả trình điều khiển MongoDB và Mongoose. Trong bài viết này, tôi sẽ tập trung vào việc sử dụng Node. js làm phụ trợ
Vậy MongoDB là gì, MongoDB là một cơ sở dữ liệu được mô hình hóa tài liệu đã được chấp nhận rộng rãi trong cộng đồng công nghệ nói chung. Các trường hợp sử dụng của nó rất nhiều nhưng vẫn khác biệt với các loại cơ sở dữ liệu khác như cơ sở dữ liệu quan hệ (SQL, Postgresql), cơ sở dữ liệu đồ thị như dgraph, v.v. Do bản chất của nó là MongoDB không liên quan nên thường không thực thi các lược đồ, điều này khiến ban đầu hơi kỳ lạ đối với các lập trình viên đến từ sql hoặc tương tự như nền tảng sql. Do đó, nhu cầu về Mô hình hóa dữ liệu đối tượng và đó là khi Mongoose xuất hiện dưới dạng thư viện ODM cho MongoDB để giúp thực thi các Lược đồ
Sử dụng lược đồ
Các lược đồ rất hữu ích đối với kiểu dữ liệu nghiêm ngặt được thực thi, duy trì cấu trúc và dễ dàng liên quan đến cơ sở dữ liệu sql. Vì vậy, hãy xem một số trường hợp sử dụng mà chúng ta thấy cần có lược đồ
- Cơ sở dữ liệu có nhiều tài liệu con. Việc truy vấn các tài liệu phụ trong MongoDB đôi khi có thể rất khó chịu và tôi là người chứng kiến điều đó. Đi đến các tài liệu, bạn thậm chí có thể thấy rằng khi thực hiện khớp bằng trên các tài liệu phụ, vấn đề thứ tự trường và các tài liệu phụ phải khớp chính xác.
- Cơ sở dữ liệu có cấu trúc phức tạp. Khi làm việc trên cơ sở dữ liệu phức tạp với nhiều cấp độ cấu trúc, lược đồ sẽ giúp bạn dễ dàng dự đoán và dễ dàng hơn. Giống như mảng đối tượng, có thể chứa mảng với đối tượng, việc nhìn trực tiếp vào dữ liệu có thể khiến bạn bối rối và thất vọng, nhưng lược đồ cung cấp thông tin chuyên sâu trong khi vẫn đảm bảo định dạng dữ liệu
- Một lý do chính đáng khác là hạn chế thay đổi hình dạng tài liệu của bạn một cách không cần thiết. Hãy tưởng tượng việc viết một đối tượng vào một giá trị chuỗi được đặt tên trước đây, MongoDB có xu hướng viết điều này chậm do sự thay đổi về hình dạng của tài liệu, nhờ thay đổi kích thước
Mongoose không phải là thư viện ODM duy nhất, còn có các lược đồ hapijs/joi, MongoDB, v.v. Và mặc dù Mongoose đặc biệt tốt trong các lĩnh vực suy luận kiểu dữ liệu, nhưng chúng ta nên chọn sử dụng xác thực lược đồ MongoDB để xác thực lược đồ
Muốn phát triển, tích hợp, thử nghiệm, triển khai và giám sát các hoạt động dữ liệu doanh nghiệp không bị gián đoạn?
Các chuyên gia của chúng tôi sẽ giúp nâng cao tính khả dụng của dữ liệu, giảm thời gian ngừng hoạt động, giảm chi phí vận hành và giảm thiểu rủi ro dữ liệu
Vậy tại sao lại sử dụng xác thực lược đồ MongoDB trên Mongoose?
Đầu tiên, chúng ta nên biết rằng cầy mangut không chính thức thuộc nhóm MongoDB và mặc dù nó giúp ích trong ODM, nhưng nó có thể gây ra những hậu quả không lường trước được trong tương lai, đặc biệt là đối với các dự án lớn và nhóm MongoDB không thể giúp đỡ hoặc giảm thiểu. Ngoài ra, (các) Mối quan hệ giữa lược đồ Mongoose và mô hình cơ sở dữ liệu của chúng tôi chỉ tồn tại trong giới hạn của Nút của chúng tôi. ứng dụng js
Nhưng vâng, bạn có thể cùng nhau tận dụng sức mạnh của các lược đồ và tính duy nhất của mô hình MongoDB bằng cách sử dụng xác thực lược đồ MongoDB. Bạn có thể kiểm tra làm thế nào để đi về nó ở đây
Không sử dụng Schemas, tại sao?
Trong khi sử dụng các lược đồ, bạn có xu hướng bỏ lỡ toàn bộ ý nghĩa của việc sử dụng MongoDB, đặc biệt là trong ngôn ngữ được nhập động như javascript hoặc python. MongoDB cung cấp cho bạn cơ sở dữ liệu loại tài liệu không liên quan có thể tạo ra sự phát triển dữ liệu, thao tác biểu mẫu dữ liệu, hỗ trợ nhiều dạng dữ liệu trong khi vẫn duy trì sự phân tách các mối quan tâm
Hãy xem một số lý do chi tiết
- Thế giới thực hỗn độn. Nếu bạn sử dụng twitter, bạn sẽ thấy nhiều câu chuyện cười về cách người dùng nên sử dụng sản phẩm của họ so với cách người dùng cố gắng sử dụng sản phẩm đó. Số lượng người dùng tăng lên làm phát sinh các trường hợp mới và tôi có thể đảm bảo với bạn rằng bạn không thể dự đoán đó sẽ là trường hợp nào. Điều này đôi khi dẫn đến các ứng dụng bị sập gây hại cho phạm vi tiếp cận của ứng dụng theo nhiều cách. Đã nhiều lần tôi luôn mắc lỗi chỉ cho phép cái này và chặn mọi thứ khác, thay vào đó nên cho phép mọi thứ trừ cái này.
- Tự do khỏi các loại dữ liệu hạn chế. Với MongoDB, bạn không thể ràng buộc bản thân hoặc người dùng bằng một biểu mẫu duy nhất mà dữ liệu phải có, bạn có xu hướng bỏ lỡ các công cụ và tính năng mà MongoDB cung cấp cho bạn để chiếu dữ liệu của bạn lên đó .
- Hiệu suất. Không có gì đáng ngạc nhiên khi trình điều khiển MongoDB hoạt động tốt hơn Mongoose và nếu bạn muốn đọc thêm về điều này, hãy xem tại đây
- Hệ sinh thái. MongoDB ngày càng mở rộng, giờ đây chúng tôi có MongoDB Switch cho serverless, MongoDB Charts và tất cả những thứ này đều được hỗ trợ bởi các trình điều khiển riêng không giống như các thư viện của bên thứ ba như Mongoose.
MongoDB sẽ cung cấp cho bạn nhiều hơn nữa với các công cụ và tính năng không quên Giao diện người dùng La bàn, chúng tôi phải sử dụng các công cụ này để dễ dàng hơn là hạn chế. Tuy nhiên, nếu có bất kỳ trường hợp sử dụng cần thiết nào để sử dụng lược đồ, tôi khuyên bạn nên sử dụng xác thực lược đồ MongoDB thông qua trình điều khiển gốc giúp xác thực dữ liệu của bạn đúng cách. Mongoose là tốt và đừng hiểu sai ý tôi, tôi không bảo bạn đột ngột bỏ nó. Tôi chỉ cho bạn thấy sự cần thiết của một công cụ tốt hơn và trong khi Mongoose có thể giúp những người đến từ nền tảng sql, MongoDB sử dụng trình điều khiển gốc thì không
Bạn muốn cải thiện chất lượng, tốc độ, cộng tác và thúc đẩy văn hóa cải tiến liên tục trong lĩnh vực phân tích dữ liệu?. Lên lịch đánh giá miễn phí .
Đăng ký Hội thảo đánh giá ROI trên đám mây miễn phí
Nhận một báo cáo đánh giá chi tiết với các khuyến nghị với một báo cáo đánh giá
Lên lịch hội thảo miễn phíThích những gì bạn đọc
Vui lòng để lại phản hồi
0 0 phiếu
Đánh giá bài viết
Nhãn
{} [+]
Tên*E-mail*
Nhãn
{} [+]
Tên*E-mail*
0 Nhận xét
Phản hồi nội tuyến
Xem tất cả bình luận
Bài viết liên quan bạn có thể muốn đọc
Quy trình bảo mật dành cho DevOps với IriusRisk là gì
Đọc thêm
Chạy thành công Jenkins bên trong cụm Kubernetes
- Đám mây
Đọc thêm
Đổi mới lĩnh vực bán lẻ – từ DevOps đến DataOps
- Đám mây
Đọc thêm
SÁCH điện tử MIỄN PHÍ. Quy trình RFP được đề xuất để chọn nhà cung cấp đám mây
Chúng tôi ở đây để đơn giản là quá trình di chuyển của bạn sang đám mây bằng cách bắt tay vào một hành trình lên đám mây có hệ thống, có kế hoạch, theo từng giai đoạn