Разница между MongoDB и Mongoose


157

Я хотел использовать базу данных mongodb, но заметил, что есть две разные базы данных с собственным сайтом и методами установки: mongodb и mongoose. Поэтому я решил задать себе вопрос: «Какой из них я использую?».

Поэтому, чтобы ответить на этот вопрос, я спрашиваю сообщество, не могли бы вы объяснить, в чем разница между этими двумя? А если можно плюсы и минусы? Потому что они действительно похожи на меня.


передать его: medium.com/@bugwheels94/...
Dhiraj KATEKAR

Ответы:


233

Я предполагаю, что вы уже знаете, что MongoDB - это система баз данных NoSQL, которая хранит данные в форме документов BSON. Ваш вопрос, однако, о пакетах для Node.js.

С точки зрения Node.js, mongodb - это родной драйвер для взаимодействия с экземпляром mongodb, а mongoose - инструмент для моделирования объектов для MongoDB.

Mongoose построен поверх драйвера MongoDB, чтобы предоставить программистам возможность моделировать свои данные.

РЕДАКТИРОВАТЬ: Я не хочу комментировать, что лучше, так как это сделало бы этот ответ самоуверенным. Однако я перечислю некоторые преимущества и недостатки использования обоих подходов.

Используя Mongoose, пользователь может определить схему для документов в определенной коллекции. Это обеспечивает большое удобство в создании и управлении данными в MongoDB. С другой стороны, изучение мангуста может занять некоторое время, и имеет некоторые ограничения в обработке схем, которые являются довольно сложными.

Однако, если ваша схема сбора непредсказуема, или вы хотите использовать оболочку типа Mongo в Node.js, то используйте драйвер MongoDB. Это проще всего подобрать. Недостатком здесь является то, что вам придется писать большие объемы кода для проверки данных, и риск ошибок выше.


9
Это довольно основанный на мнении вопрос. Некоторые могут предпочесть API более низкого уровня. Почему бы вам не проверить Mongoose и родной драйвер, а затем решить, какой из них лучше для вас?
juunas

1
@ Michael9 Родной драйвер MongoDB для Node.js имеет то же имя. Обратите внимание на слова «в терминах Node.js ...». Ваше редактирование было неверным.
ZeMoon

@ZeMoon в этом случае она должна быть mongodbне MongoDB: P
styvane

Может ли быть практическая разница, когда мангусты ссылаются на названия коллекций во множественном числе?
Энтони Гиббс

2
Нужно также учитывать фактор производительности, пожалуйста, обратитесь к этому URL, этот парень поделился потрясающими тестами. medium.com/@bugwheels94/...
Dhiraj KATEKAR

46

Mongo - это база данных NoSQL.

Если вы не хотите использовать ORM для своих моделей данных, вы также можете использовать собственный драйвер mongo.js: https://github.com/mongodb/node-mongodb-native .

Mongoose - одна из тех, кто предоставляет нам функциональные возможности для доступа к данным Монго по легко понятным запросам.

Mongoose играет роль абстракции над вашей моделью базы данных.


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 и никогда не имел значения для проприетарного кода. Ссылка: mongodb.com/community/licensing
DrHouse

2
Ответ на MongoDB часть 4 неверен. Обычно клиентские приложения используют драйверы MongoDB (т.е. драйвер MongoDB Node.JS), которые лицензируются под Apache v2. Если вы изменяете сам код сервера MongoDB (базу данных) и перераспределяете его, то вам нужно либо коммерческое соглашение, либо его с открытым исходным кодом. Изменение лицензии SSPL является лишь дополнением к предложению поставщиков облачных баз данных как услуги, то есть предоставляет возможности базы данных, аналогичные MongoDB Atlas или AWS RDS, и т. Д.
Wan

6

mongo-dbскорее всего, не лучший выбор для новых разработчиков.
С другой стороны, mongooseORM (Object Relational Mapping) может быть лучшим выбором для новичков.


2
Добро пожаловать в стек переполнения! Ваш ответ может быть ценным, но в нем отсутствуют некоторые объяснения. Возможно, вы все еще можете добавить несколько слов к своему ответу. Вот руководство, чтобы дать хорошие ответы .
Дэвид

4

Mongodb и Mongoose - это два разных драйвера для взаимодействия с базой данных MongoDB.

Mongoose : библиотека для моделирования объектных данных (ODM), которая обеспечивает строгую среду моделирования для ваших данных. Используется для взаимодействия с MongoDB, облегчает жизнь, обеспечивая удобство в управлении данными.

Mongodb : собственный драйвер в Node.js для взаимодействия с MongoDB.


2

Mongodb и Mongoose - две совершенно разные вещи!

Mongodb - это сама база данных , а Mongoose - инструмент объектного моделирования для Mongodb.

РЕДАКТИРОВАТЬ: Как указано, MongoDB это пакет npm, спасибо!


40
mongodb - это не база данных, это пакет узлов, который является родным драйвером mongo. Это API самого низкого уровня для доступа к серверу Монго с узла js.
mariocatch

3
Вопрос касался родного драйвера Mongodb для операций с БД против мангуста. Ответ не на месте.
сарора

@mariocatch MongoDB - это база данных документов с масштабируемостью и гибкостью, которую вы хотите с запросами и индексацией, которые вам нужны. Это написано на главной странице его документации.
Глубокий Каккар
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.