Diferença entre MongoDB e Mongoose

157

Eu queria usar o banco de dados mongodb, mas notei que existem dois bancos de dados diferentes com seu próprio site e métodos de instalação: mongodb e mongoose. Então eu me perguntei: "Qual deles eu uso?".

Então, para responder a essa pergunta, pergunto à comunidade se você poderia explicar quais são as diferenças entre esses dois? E se possível prós e contras? Porque eles realmente se parecem muito comigo.

Ravindra Galav
fonte
Consulte-o: medium.com/@bugwheels94/…
DHIRAJ KATEKAR

Respostas:

233

Suponho que você já saiba que o MongoDB é um sistema de banco de dados NoSQL que armazena dados na forma de documentos BSON. Sua pergunta, no entanto, é sobre os pacotes para Node.js.

Em termos de Node.js, o mongodb é o driver nativo para interagir com uma instância do mongodb e o mongoose é uma ferramenta de modelagem de objetos para o MongoDB.

O Mongoose é construído sobre o driver MongoDB para fornecer aos programadores uma maneira de modelar seus dados.

EDIT: Eu não quero comentar sobre o que é melhor, pois isso tornaria essa resposta opinativa. No entanto, listarei algumas vantagens e desvantagens do uso de ambas as abordagens.

Usando o Mongoose, um usuário pode definir o esquema para os documentos em uma coleção específica. Ele fornece muita conveniência na criação e gerenciamento de dados no MongoDB. Por outro lado, aprender mangusto pode levar algum tempo e possui algumas limitações no manuseio de esquemas bastante complexos.

No entanto, se o seu esquema de coleção for imprevisível, ou você desejar uma experiência semelhante ao Mongo-shell no Node.js, vá em frente e use o driver MongoDB. É o mais simples de pegar. A desvantagem aqui é que você precisará escrever grandes quantidades de código para validar os dados, e o risco de erros é maior.

ZeMoon
fonte
9
Essa é uma pergunta bastante baseada em opinião. Alguns podem preferir uma API de nível inferior. Por que você não verifica o Mongoose e o driver nativo e decide qual é o melhor para você?
juunas
1
@ Michael9 O driver nativo do MongoDB para o Node.js tem o mesmo nome. Observe as palavras 'em termos de Node.js ...'. Sua edição estava incorreta.
ZeMoon 25/02
@ZeMoon neste caso deve ser mongodbnão MongoDB: P
styvane
Poderia haver uma diferença prática em que o mangusto se liga aos nomes das coleções no plural?
Antony Gibbs
2
Deve-se considerar também o fator de desempenho, consulte este URL, esse cara compartilhou benchmarks impressionantes. medium.com/@bugwheels94/…
KATEKAR
46

Mongo é o banco de dados NoSQL.

Se você não quiser usar nenhum ORM para seus modelos de dados, também poderá usar o driver nativo mongo.js: https://github.com/mongodb/node-mongodb-native .

O Mongoose é um dos orm que nos fornece funcionalidade para acessar os dados do mongo com consultas facilmente compreensíveis.

O Mongoose desempenha um papel de abstração sobre o seu modelo de banco de dados.

Anubhav Singh
fonte
1
@ArslanRamay: medium.com/@bugwheels94/... , muito útil
Dhiraj KATEKAR
14

Mais uma diferença que eu encontrei com respeito a ambos é que é bastante fácil de connect to multiple databasescom mongodb native driverenquanto você tem que arounds uso de trabalho em mongooseque ainda têm algumas desvantagens.

Portanto, se você quiser usar um aplicativo multitenant, escolha o driver nativo mongodb.

Rahul
fonte
6

Se você planeja usar esses componentes junto com seu código proprietário, consulte as informações abaixo.

Mongodb:

  1. É um banco de dados.
  2. Este componente é regido pela licença Affero General Public License (AGPL).
  3. Se você vincular esse componente ao seu código proprietário, precisará liberar todo o código-fonte em domínio público, por causa de seu efeito viral como (GPL, LGPL etc.)
  4. Se você estiver hospedando seu aplicativo na nuvem, o (2) será aplicado e você também precisará liberar suas informações de instalação para os usuários finais.

Mangusto:

  1. É uma ferramenta de modelagem de objetos.
  2. Este componente é regido pela licença do MIT.
  3. Permitido o uso deste componente junto com o código proprietário, sem nenhuma restrição.
  4. É permitido enviar seu aplicativo usando qualquer mídia ou host.
ANK
fonte
1
Só pensei em mencionar. Os componentes do servidor antes de 16 de outubro de 2018 eram AGPL, mas agora são uma licença personalizada. embora o driver (mongodb) sempre tenha sido Apache e nunca tenha importado o código proprietário. Ref: mongodb.com/community/licensing
DrHouse
2
A resposta para a parte 4 do MongoDB está incorreta. Geralmente, os aplicativos clientes usam os drivers MongoDB (ou seja, driver MongoDB Node.JS), licenciados sob o Apache v2. Se você estiver modificando o código do servidor MongoDB (o banco de dados) e redistribuindo-o, precisará de um contrato comercial ou de código-fonte aberto. A mudança de licença SSPL é apenas um complemento para o banco de dados-como-um-serviço de nuvem fornecedores cláusula ou seja, expondo o banco de dados de características semelhantes às MongoDB Atlas ou AWS RDS, etc.
Wan Bachtiar
6

mongo-dbprovavelmente não é uma ótima opção para novos desenvolvedores.
Por outro lado, mongoosecomo um ORM (Object Relational Mapping) pode ser uma escolha melhor para os novatos.

Shreyash Pandey
fonte
2
Bem-vindo ao Stack Overflow! Sua resposta pode ser valiosa, mas falta uma explicação. Talvez você ainda possa adicionar algumas palavras à sua resposta. Aqui está um guia para dar boas respostas .
David
4

Mongodb e Mongoose são dois drivers diferentes para interagir com o banco de dados MongoDB.

Mongoose : biblioteca de modelagem de dados do objeto (ODM) que fornece um ambiente de modelagem rigoroso para seus dados. Utilizado para interagir com o MongoDB, facilita a vida, fornecendo conveniência no gerenciamento de dados.

Mongodb : driver nativo no Node.js para interagir com o MongoDB.

dhaker
fonte
3

Mongodb e Mongoose são duas coisas completamente diferentes!

O Mongodb é o próprio banco de dados , enquanto o Mongoose é uma ferramenta de modelagem de objetos para o Mongodb

EDIT: Como apontado, o MongoDB é o pacote npm, obrigado!

Segredo
fonte
40
O mongodb não é um banco de dados, é um pacote de nós que é o driver nativo do mongo. É a API de nível mais baixo para acessar um servidor mongo a partir do nó js.
Mariocatch 27/05
3
A pergunta era sobre o driver nativo do Mongodb para operações de banco de dados vs mangusto. A resposta não está no ponto.
sarora
@mariocatch O MongoDB é um banco de dados de documentos com a escalabilidade e flexibilidade que você deseja com as consultas e indexações necessárias. Está escrito na página inicial de sua documentação.
Deep Kakkar