Різниця між MongoDB та Mongoose


157

Я хотів використати базу даних mongodb, але помітив, що є дві різні бази даних або з власним веб-сайтом, і з методами установки: mongodb та mongoose. Тож я придумав собі таке питання: "Яким я користуюся?".

Тож, щоб відповісти на це запитання, я запитую громаду, чи можете ви пояснити, які відмінності між цими двома? І якщо можливі плюси і мінуси? Бо вони насправді дуже схожі на мене.


зверніться до нього: medium.com/@bugwheels94/…
DHIRAJ KATEKAR

Відповіді:


233

Я припускаю, що ви вже знаєте, що MongoDB - це система баз даних NoSQL, яка зберігає дані у вигляді документів BSON. Однак ваше запитання стосується пакетів для Node.js.

З точки зору Node.js, mongodb є основним драйвером для взаємодії з екземпляром mongodb, а мангуста - це інструмент моделювання об'єктів для MongoDB.

Mongoose побудований поверх драйвера MongoDB, щоб надати програмістам спосіб моделювання своїх даних.

EDIT: Я не хочу коментувати, що краще, оскільки це зробило б цю відповідь висловленою. Однак я перелічу деякі переваги та недоліки використання обох підходів.

Користуючись Mongoose, користувач може визначити схему для документів у певній колекції. Це забезпечує масу зручностей у створенні та керуванні даними в MongoDB. З іншого боку, навчання мангусту може зайняти деякий час і має деякі обмеження в роботі із схемами, які є досить складними.

Однак якщо ваша схема колекції непередбачувана, або ви хочете мати оболонку Mongo, подібну досвіду всередині Node.js, тоді продовжуйте використовувати драйвер MongoDB. Найпростіше підібрати. Мінус тут полягає в тому, що вам доведеться написати більшу кількість коду для перевірки даних, і ризик помилок вище.


9
Це цілком ґрунтовне питання. Деякі можуть віддати перевагу API нижчого рівня. Чому б ти не перевірив Мангуза та рідного водія, а потім не вирішив, який із них кращий?
червень

1
@ Michael9 Рідний драйвер MongoDB для Node.js має те саме ім'я. Будь ласка, зверніть увагу на слова "з точки зору Node.js ...". Ваша редакція була неправильною.
ZeMoon

@ZeMoon в цьому випадку повинно бути mongodbне так MongoDB: P
styvane

Чи може бути практична різниця, коли мангуста посилаються на назви колекцій у множині?
Антоні Гіббс

2
Слід також врахувати коефіцієнт продуктивності, зверніться до цієї URL-адреси. Цей хлопець поділився чудовими показниками. medium.com/@bugwheels94/…
DHIRAJ KATEKAR

46

Монго - це база даних NoSQL.

Якщо ви не хочете використовувати жоден ORM для своїх моделей даних, ви також можете використовувати власний драйвер mongo.js: https://github.com/mongodb/node-mongodb-native .

Мангуст - один із орм, який надає нам функціональність для доступу до даних монго за допомогою легко зрозумілих запитів.

Мангуст грає роль абстракції над вашою моделлю баз даних.


1
@ArslanRamay: medium.com/@bugwheels94/… , дуже корисно
DHIRAJ KATEKAR

14

Ще одна відмінність , яке я знайшов у відношенні обох є те , що це досить легко connect to multiple databasesз в mongodb native driverтой час як ви повинні використовувати обхідні роботи в mongooseякій все ще мають деякі недоліки.

Тож якщо ви хочете перейти на багатосторонню програму, перейдіть за власним драйвером mongodb.


6

Якщо ви плануєте використовувати ці компоненти разом із власним кодом, зверніться нижче до інформації.

Mongodb:

  1. Це база даних.
  2. Цей компонент регулюється ліцензією Affero General Public License (AGPL).
  3. Якщо ви пов'язуєте цей компонент разом із власним кодом, тоді вам слід випустити весь вихідний код у відкритому доступі, оскільки він має вірусний ефект (GPL, LGPL тощо)
  4. Якщо ви розміщуєте свою програму через хмару, застосуємо (2), а також вам доведеться передавати інформацію про встановлення кінцевим користувачам.

Мангуст:

  1. Це інструмент моделювання об'єктів.
  2. Цей компонент регулюється ліцензією MIT.
  3. Дозволено використовувати цей компонент разом із власним кодом без будь-яких обмежень.
  4. Дозволяється доставка вашої програми з будь-якого носія або хоста.

1
Просто думав, що згадаю. Компоненти Сервера до 16 жовтня 2018 року були AGPL, але тепер є певною спеціальною ліцензією. хоча драйвер (mongodb) завжди був Apache і ніколи не мав значення для власного коду. Ref: mongodb.com/community/licensing
DrHouse

2
Відповідь MongoDB, частина 4, невірна. Зазвичай клієнтські програми використовують драйвери MongoDB (тобто драйвер MongoDB Node.JS), які ліцензуються під Apache v2. Якщо ви змінюєте сам код сервера MongoDB (базу даних) і перерозподіляєте його, то вам потрібна комерційна угода або відкритий код. Зміна ліцензії на SSPL - це лише доповнення до пункту постачальників хмарних даних про послугу, тобто розкриття можливостей бази даних, схожих на MongoDB Atlas або AWS RDS тощо.
Ван Бахтіар,

6

mongo-dbшвидше за все, це не відмінний вибір для нових розробників.
З іншого боку mongoose, ORM (Object Relational Mapping) може бути кращим вибором для новоспечених.


2
Ласкаво просимо до переповнення стека! Ваша відповідь може бути цінною, але в ній відсутні деякі пояснення. Можливо, ви все-таки можете додати кілька слів до своєї відповіді. Ось посібник, який дає хороші відповіді .
Девід

4

Mongodb і Mongoose - це два різних драйвери для взаємодії з базою даних MongoDB.

Мангуста : бібліотека моделювання об'єктних даних (ODM), яка забезпечує жорстке середовище моделювання ваших даних. Використовується для взаємодії з MongoDB, вона полегшує життя, забезпечуючи зручність в управлінні даними.

Mongodb : рідний драйвер Node.js для взаємодії з MongoDB.


3

Mongodb і Mongoose - дві абсолютно різні речі!

Mongodb - це сама база даних , тоді як Mongoose - це інструмент моделювання об'єктів для Mongodb

EDIT: Як зазначалося, MongoDB - це пакет npm, дякую!


40
mongodb - це не база даних, це пакет вузлів, який є рідним драйвером mongo. Це найнижчий рівень API для доступу до сервера mongo з вузла js.
маріокач

3
Питання стосувалося рідного драйвера Mongodb для db-операцій проти мангуста. Відповідь не суттєва.
сарора

@mariocatch MongoDB - це база даних документів із масштабованістю та гнучкістю, яку ви хочете, за допомогою потрібних запитів та індексування. Це написано на домашній сторінці своєї документації.
Глибокий Какар
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.