MongoDBとMongooseの違い


157

mongodbデータベースを使用したかったのですが、独自のWebサイトとインストール方法の2つの異なるデータベース、mongodbとmongooseがあることに気付きました。だから私は自分にこの質問を尋ねてきました:「どちらを使用しますか?」

それで、この質問に答えるために、これらの2つの違いは何ですか?そして、もし可能なら賛否両論?彼らは本当に私にとてもよく似ているからです。


参照してください。medium.com
@ bugwheels94

回答:


233

MongoDBは、データをBSONドキュメントの形式で保存するNoSQLデータベースシステムであることをすでにご存じだと思います。しかし、あなたの質問は、Node.jsのパッケージについてです。

Node.jsの面では、MongoDBはあるネイティブドライバのMongoDBインスタンスと相互作用するとマングースであるオブジェクト・モデリング・ツール のMongoDBのために。

Mongooseは、MongoDBドライバーの上に構築され、プログラマーにデータをモデル化する方法を提供します。

編集: これはこの回答を説得力のあるものにするので、どちらが良いかについてコメントしたくありません。ただし、両方のアプローチを使用することの利点と欠点をいくつか挙げます。

Mongooseを使用すると、ユーザーは特定のコレクション内のドキュメントのスキーマを定義できます。MongoDBでのデータの作成と管理に多くの利便性を提供します。欠点として、マングースの学習には時間がかかり、非常に複雑なスキーマの処理にはいくつかの制限があります。

ただし、コレクションスキーマが予測できない場合、またはNode.js内でMongo-shellのようなエクスペリエンスが必要な場合は、MongoDBドライバーを使用してください。ピックアップするのが最も簡単です。ここでの欠点は、データを検証するために大量のコードを記述する必要があり、エラーのリスクが高くなることです。


9
それは非常に意見に基づく質問です。低レベルのAPIを好む人もいます。Mongooseとネイティブドライバーを調べて、どちらがあなたに適しているかを判断してみませんか?
juunas 2015

1
@ Michael9 Node.jsのネイティブMongoDBドライバーは同じ名前です。「Node.jsに関して」という言葉に注意してください。あなたの編集は間違っていました。
ZeMoon、2015

@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は、わかりやすいクエリでmongoデータにアクセスする機能を提供するormの1つです。

Mongooseは、データベースモデルに対する抽象化の役割を果たします。


1
@ArslanRamay:medium.com/@bugwheels94/…、大いに役立つ
DHIRAJ KATEKAR 2018年

14

両方に関して私が見つけたもう1つの違いは、まだいくつかの欠点がある回避策を使用する必要がある一方connect to multiple databasesmongodb native driver、かなり簡単に操作できることですmongoose

したがって、マルチテナントアプリケーションを使用する場合は、mongodbネイティブドライバーを使用してください。


6

独自のコードとともにこれらのコンポーネントを使用する場合は、以下の情報を参照してください。

Mongodb:

  1. それはデータベースです。
  2. このコンポーネントには、Affero General Public License(AGPL)ライセンスが適用されます。
  3. このコンポーネントを独自のコードとリンクする場合は、ソースコード全体をパブリックドメインでリリースする必要があります。これは、(GPL、LGPLなど)のようなウイルス効果のためです。
  4. クラウド経由でアプリケーションをホストしている場合は、(2)が適用され、インストール情報をエンドユーザーにリリースする必要があります。

マングース:

  1. これはオブジェクトモデリングツールです。
  2. このコンポーネントはMITライセンスによって管理されています。
  3. このコンポーネントを独自のコードと一緒に、制限なしで使用することができます。
  4. 任意のメディアまたはホストを使用してアプリケーションを出荷することが許可されています。

1
ちょうど私が言及するだろうと思った。2018年10月16日より前のサーバーコンポーネントはAGPLでしたが、現在はカスタムライセンスです。ただし、ドライバー(mongodb)は常にApacheであり、プロプライエタリコードでは問題になりませんでした。参照:mongodb.com/community/licensing
DrHouse

2
MongoDBパート4の答えは正しくありません。通常、クライアントアプリケーションは、Apache v2でライセンスされているMongoDBドライバー(MongoDB Node.JSドライバー)を使用します。MongoDBサーバーコード自体(データベース)を変更して再配布する場合は、商用契約またはオープンソースコードが必要です。SSPLライセンスの変更は、データベースサービスとして、クラウドのためだけの追加であるなどMongoDBのアトラスやAWS RDS、同様の機能データベースさらすすなわち句をベンダー
ワンBachtiar

6

mongo-db新しい開発者にとってはおそらく良い選択ではありません。
一方mongoose、ORM(オブジェクトリレーショナルマッピング)は、初心者にはより良い選択です。


2
Stack Overflowへようこそ!あなたの答えは価値があるかもしれませんが、いくつかの説明が欠けています。おそらくあなたはまだあなたの答えにいくつかの単語を追加することができます。ここに良い答えを与えるためのガイドがあります
デビッド

4

MongodbとMongooseは、MongoDBデータベースと対話するための2つの異なるドライバーです。

Mongoose:データに厳密なモデリング環境を提供するオブジェクトデータモデリング(ODM)ライブラリ。MongoDBとのやり取りに使用され、データ管理の利便性を提供することで、生活を楽にします。

Mongodb:MongoDBと対話するためのNode.jsのネイティブドライバー。


3

MongodbとMongooseは2つのまったく異なるものです。

Mongodbはデータベース自体であり、MongooseはMongodbのオブジェクトモデリングツールです。

編集:指摘したように、MongoDBはnpmパッケージです、ありがとう!


40
mongodbはデータベースではなく、ネイティブのmongoドライバーであるノードパッケージです。これは、ノードjsからmongoサーバーにアクセスするための最低レベルのAPIです。
mariocatch 2015年

3
質問は、db操作とmongooseのMongodb ネイティブドライバに関するものでした。答えは適切ではありません。
sarora 2017年

@mariocatch MongoDBは、必要なクエリとインデックス作成に必要なスケーラビリティと柔軟性を備えたドキュメントデータベースです。それはそのドキュメントのホームページに書かれています。
ディープカッカー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.