Sự khác biệt giữa MongoDB và Mongoose


157

Tôi muốn sử dụng cơ sở dữ liệu mongodb, nhưng tôi nhận thấy rằng có hai cơ sở dữ liệu khác nhau với trang web và phương thức cài đặt của riêng họ: mongodb và mongoose. Vì vậy, tôi đã tự hỏi mình câu hỏi này: "Tôi sử dụng cái nào?".

Vì vậy, để trả lời câu hỏi này, tôi hỏi cộng đồng nếu bạn có thể giải thích sự khác biệt giữa hai điều này là gì? Và nếu có thể ưu và nhược điểm? Bởi vì họ thực sự trông rất giống tôi.


Câu trả lời:


233

Tôi giả sử bạn đã biết rằng MongoDB là một hệ thống cơ sở dữ liệu NoQuery lưu trữ dữ liệu dưới dạng tài liệu BSON. Tuy nhiên, câu hỏi của bạn là về các gói cho Node.js.

Về mặt Node.js, mongodbtrình điều khiển riêng để tương tác với một cá thể mongodb và mongoose là một công cụ mô hình hóa đối tượng cho MongoDB.

Mongoose được xây dựng trên trình điều khiển MongoDB để cung cấp cho các lập trình viên một cách để mô hình hóa dữ liệu của họ.

EDIT: Tôi không muốn bình luận về cái nào tốt hơn, vì điều này sẽ khiến câu trả lời này có ý kiến. Tuy nhiên tôi sẽ liệt kê một số ưu điểm và nhược điểm của việc sử dụng cả hai phương pháp.

Sử dụng Mongoose, người dùng có thể xác định lược đồ cho các tài liệu trong một bộ sưu tập cụ thể. Nó cung cấp rất nhiều tiện lợi trong việc tạo và quản lý dữ liệu trong MongoDB. Mặt khác, việc học cầy mang có thể mất một thời gian và có một số hạn chế trong việc xử lý các lược đồ khá phức tạp.

Tuy nhiên, nếu lược đồ bộ sưu tập của bạn không thể đoán trước được hoặc bạn muốn có trải nghiệm giống như vỏ Mongo bên trong Node.js, thì hãy tiếp tục và sử dụng trình điều khiển MongoDB. Nó là đơn giản nhất để nhận. Nhược điểm ở đây là bạn sẽ phải viết số lượng mã lớn hơn để xác thực dữ liệu và nguy cơ lỗi cao hơn.


9
Đó là một câu hỏi dựa trên quan điểm. Một số có thể thích API cấp thấp hơn. Tại sao bạn không kiểm tra Mongoose và trình điều khiển gốc, sau đó quyết định xem cái nào tốt hơn cho bạn?
juunas

1
@ Michael9 Trình điều khiển MongoDB riêng cho Node.js có cùng tên. Vui lòng lưu ý các từ 'về mặt Node.js ...'. Chỉnh sửa của bạn không chính xác.
ZeMoon

@ZeMoon trong trường hợp này nó phải mongodbkhông MongoDB: P
styvane

Có thể có một sự khác biệt thực tế trong đó mongoose liên kết đến tên bộ sưu tập ở số nhiều?
Antony Gibbs

2
Một người cũng nên xem xét yếu tố hiệu suất, vui lòng tham khảo url này, anh chàng này đã chia sẻ điểm chuẩn tuyệt vời. Medium.com/@ormswheels94/ từ
DHIRAJ KATEKAR

46

Mongo là cơ sở dữ liệu NoQuery.

Nếu bạn không muốn sử dụng bất kỳ ORM nào cho các mô hình dữ liệu của mình thì bạn cũng có thể sử dụng trình điều khiển gốc mongo.js: https://github.com/mongodb/node-mongodb-native .

Mongoose là một trong những orm cung cấp cho chúng tôi chức năng truy cập dữ liệu mongo với các truy vấn dễ hiểu.

Mongoose đóng vai trò trừu tượng hóa mô hình cơ sở dữ liệu của bạn.


1
@ArslanRamay: Medium.com/@ormswheels94/ , rất hữu ích
DHIRAJ KATEKAR

14

Một sự khác biệt nữa tôi tìm thấy liên quan đến cả hai với là nó là khá dễ dàng để connect to multiple databasesmongodb native driverkhi bạn phải ở quanh sử dụng làm việc trong mongooseđó vẫn có một số nhược điểm.

Vì vậy, nếu bạn muốn dùng một ứng dụng đa nhiệm, hãy chọn trình điều khiển gốc mongodb.


6

Nếu bạn đang có kế hoạch sử dụng các thành phần này cùng với mã độc quyền của bạn thì vui lòng tham khảo thông tin bên dưới.

Mongodb:

  1. Đó là một cơ sở dữ liệu.
  2. Thành phần này được điều chỉnh bởi giấy phép Giấy phép Công cộng Chung (AGPL).
  3. Nếu bạn liên kết thành phần này cùng với mã độc quyền của mình thì bạn phải phát hành toàn bộ mã nguồn của mình trong miền công cộng, vì đó là hiệu ứng lan truyền như (GPL, LGPL, v.v.)
  4. Nếu bạn đang lưu trữ ứng dụng của mình qua đám mây, (2) sẽ áp dụng và bạn cũng phải tiết lộ thông tin cài đặt của mình cho người dùng cuối.

Mongoose:

  1. Đây là một công cụ mô hình hóa đối tượng.
  2. Thành phần này được điều chỉnh bởi giấy phép MIT.
  3. Được phép sử dụng thành phần này cùng với mã độc quyền, không có bất kỳ hạn chế nào.
  4. Vận chuyển ứng dụng của bạn bằng cách sử dụng bất kỳ phương tiện truyền thông hoặc máy chủ lưu trữ được cho phép.

1
Chỉ cần nghĩ rằng tôi muốn đề cập đến. Các thành phần Máy chủ trước ngày 16 tháng 10 năm 2018 là AGPL, nhưng bây giờ là một số giấy phép tùy chỉnh. mặc dù trình điều khiển (mongodb) luôn là Apache và không bao giờ quan trọng đối với mã độc quyền. Tham chiếu: mongodb.com/community/licensing
DrHouse

2
Câu trả lời cho MongoDB phần 4 là không chính xác. Nói chung, các ứng dụng khách sử dụng trình điều khiển MongoDB (tức là trình điều khiển MongoDB Node.JS) được cấp phép theo Apache v2. Nếu bạn đang sửa đổi chính mã máy chủ MongoDB (cơ sở dữ liệu) và phân phối lại, thì bạn cần một thỏa thuận thương mại hoặc mã nguồn mở. Thay đổi giấy phép SSPL chỉ là một bổ sung cho mệnh đề nhà cung cấp dịch vụ đám mây dưới dạng dịch vụ tức là phơi bày các tính năng cơ sở dữ liệu tương tự MongoDB Atlas hoặc AWS RDS, v.v.
Wan Bachtiar

6

mongo-dbcó thể không phải là một lựa chọn tuyệt vời cho các nhà phát triển mới.
Mặt khác, mongoosedưới dạng ORM (Ánh xạ quan hệ đối tượng) có thể là lựa chọn tốt hơn cho các bies mới.


2
Chào mừng bạn đến với Stack Overflow! Câu trả lời của bạn có thể có giá trị nhưng nó thiếu một số lời giải thích. Có lẽ bạn vẫn có thể thêm một số từ vào câu trả lời của bạn. Dưới đây là một hướng dẫn để đưa ra câu trả lời tốt .
David

4

Mongodb và Mongoose là hai trình điều khiển khác nhau để tương tác với cơ sở dữ liệu MongoDB.

Mongoose : thư viện mô hình dữ liệu đối tượng (ODM) cung cấp môi trường mô hình hóa nghiêm ngặt cho dữ liệu của bạn. Được sử dụng để tương tác với MongoDB, nó giúp cuộc sống dễ dàng hơn bằng cách cung cấp sự tiện lợi trong việc quản lý dữ liệu.

Mongodb : trình điều khiển riêng trong Node.js để tương tác với MongoDB.


3

Mongodb và Mongoose là hai thứ hoàn toàn khác nhau!

Mongodb là cơ sở dữ liệu , trong khi Mongoose là một công cụ mô hình hóa đối tượng cho Mongodb

EDIT: Như đã chỉ ra MongoDB là gói npm, cảm ơn!


40
Mongodb không phải là cơ sở dữ liệu, đó là gói nút là trình điều khiển mongo gốc. Đây là API cấp thấp nhất để truy cập máy chủ mongo từ nút js.
mariocatch

3
Câu hỏi liên quan đến trình điều khiển gốc Mongodb cho các hoạt động db so với mongoose. Trả lời không đúng.
sarora

@mariocatch MongoDB là một cơ sở dữ liệu tài liệu với khả năng mở rộng và linh hoạt mà bạn muốn với truy vấn và lập chỉ mục mà bạn cần. Nó được viết trên trang chủ của tài liệu của nó.
Deep Kakkar
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.