Perbedaan antara MongoDB dan Mongoose


157

Saya ingin menggunakan database mongodb, tetapi saya perhatikan bahwa ada dua database berbeda dengan situs web mereka sendiri dan metode instalasi: mongodb dan luwak. Jadi saya datang bertanya pada diri sendiri pertanyaan ini: "Yang mana yang saya gunakan?"

Jadi untuk menjawab pertanyaan ini saya bertanya kepada komunitas apakah Anda dapat menjelaskan apa perbedaan antara keduanya? Dan jika mungkin pro dan kontra? Karena mereka sangat mirip dengan saya.


Jawaban:


233

Saya berasumsi Anda sudah tahu bahwa MongoDB adalah sistem database NoSQL yang menyimpan data dalam bentuk dokumen BSON. Namun pertanyaan Anda adalah tentang paket-paket untuk Node.js.

Dalam hal Node.js, mongodb adalah driver asli untuk berinteraksi dengan instance mongodb dan luwak adalah alat pemodelan objek untuk MongoDB.

Mongoose dibangun di atas driver MongoDB untuk memberi para programmer cara memodelkan data mereka.

EDIT: Saya tidak ingin mengomentari mana yang lebih baik, karena ini akan membuat jawaban ini dikemukakan pendapat. Namun saya akan mencantumkan beberapa keuntungan dan kerugian dari menggunakan kedua pendekatan tersebut.

Menggunakan Mongoose, pengguna dapat menentukan skema untuk dokumen dalam koleksi tertentu. Ini memberikan banyak kemudahan dalam pembuatan dan pengelolaan data dalam MongoDB. Pada sisi negatifnya, belajar luwak dapat memakan waktu, dan memiliki beberapa keterbatasan dalam menangani skema yang cukup rumit.

Namun, jika skema koleksi Anda tidak dapat diprediksi, atau Anda menginginkan pengalaman seperti Mongo-shell di dalam Node.js, silakan gunakan driver MongoDB. Ini adalah cara termudah untuk mengambil. Kelemahannya di sini adalah Anda harus menulis kode dalam jumlah yang lebih besar untuk memvalidasi data, dan risiko kesalahan lebih tinggi.


9
Itu pertanyaan yang cukup berdasarkan opini. Beberapa mungkin lebih suka API tingkat rendah. Mengapa Anda tidak memeriksa Mongoose dan pengemudi asli, dan kemudian memutuskan mana yang lebih baik untuk Anda?
remaja

1
@ Michael9 Driver MongoDB asli untuk Node.js memiliki nama yang sama. Harap perhatikan kata-kata 'dalam hal Node.js ...'. Hasil edit Anda salah.
ZeMoon

@ Zeemoon dalam hal ini seharusnya mongodbtidak MongoDB: P
styvane

Mungkinkah ada perbedaan praktis di mana tautan luwak ke nama koleksi dalam bentuk jamak?
Antony Gibbs

2
Satu juga harus mempertimbangkan faktor kinerja, silakan merujuk ke url ini, orang ini telah berbagi tolok ukur yang mengagumkan. medium.com/@bugwheels94/…
DHIRAJ KATEKAR

46

Mongo adalah Basis Data NoSQL.

Jika Anda tidak ingin menggunakan ORM untuk model data Anda, maka Anda juga dapat menggunakan driver asli mongo.js: https://github.com/mongodb/node-mongodb-native .

Mongoose adalah salah satu orm yang memberi kami fungsionalitas untuk mengakses data mongo dengan pertanyaan yang mudah dimengerti.

Mongoose berperan sebagai abstraksi atas model basis data Anda.


1
@ArslanRamay: medium.com/@bugwheels94/... , sangat membantu
DHIRAJ KATEKAR

14

Satu lagi perbedaan yang saya temukan berkenaan dengan keduanya adalah bahwa itu cukup mudah connect to multiple databasesdengan mongodb native driversementara Anda harus menggunakan sekitar bekerja di mongoosemana masih memiliki beberapa kekurangan.

Jadi jika Anda ingin menggunakan aplikasi multitenant, pilih driver asli mongodb.


6

Jika Anda berencana untuk menggunakan komponen ini bersama dengan kode hak milik Anda, silakan lihat informasi di bawah ini.

Mongodb:

  1. Ini basis data.
  2. Komponen ini diatur oleh lisensi Affero General Public License (AGPL).
  3. Jika Anda menautkan komponen ini bersama dengan kode hak milik Anda, maka Anda harus melepaskan seluruh kode sumber Anda di domain publik, karena itu efek viral seperti (GPL, LGPL dll)
  4. Jika Anda meng-hosting aplikasi Anda melalui cloud, (2) akan berlaku dan Anda juga harus merilis informasi instalasi Anda ke pengguna akhir.

Luwak:

  1. Ini alat pemodelan objek.
  2. Komponen ini diatur oleh lisensi MIT.
  3. Diizinkan menggunakan komponen ini bersama dengan kode hak milik, tanpa batasan apa pun.
  4. Pengiriman aplikasi Anda menggunakan media atau host apa pun diizinkan.

1
Hanya pikir saya akan menyebutkan. Komponen Server sebelum 16 Oktober 2018 adalah AGPL, tetapi sekarang ada beberapa lisensi khusus. meskipun driver (mongodb) selalu Apache dan tidak pernah penting untuk kode berpemilik. Ref: mongodb.com/community/licensing
DrHouse

2
Jawaban untuk MongoDB bagian 4 salah. Umumnya aplikasi klien menggunakan driver MongoDB (yaitu driver MongoDB Node.JS) yang dilisensikan di bawah Apache v2. Jika Anda memodifikasi kode server MongoDB itu sendiri (database) dan mendistribusikannya, maka Anda memerlukan perjanjian komersial atau sumber terbuka. Perubahan lisensi SSPL hanyalah tambahan untuk klausa vendor-sebagai-layanan-awan cloud yaitu mengekspos fitur-fitur basis data yang mirip dengan MongoDB Atlas atau AWS RDS, dll.
Wan Bachtiar

6

mongo-dbkemungkinan bukan pilihan bagus untuk pengembang baru.
Di sisi lain mongoosesebagai ORM (Object Relational Mapping) dapat menjadi pilihan yang lebih baik untuk para new-bies.


2
Selamat Datang di Stack Overflow! Jawaban Anda mungkin berharga tetapi tidak ada penjelasan. Mungkin Anda masih bisa menambahkan beberapa kata ke jawaban Anda. Berikut ini panduan untuk memberikan jawaban yang baik .
David

4

Mongodb dan Mongoose adalah dua driver yang berbeda untuk berinteraksi dengan database MongoDB.

Pustaka Mongoose : object data modelling (ODM) yang menyediakan lingkungan pemodelan yang ketat untuk data Anda. Digunakan untuk berinteraksi dengan MongoDB, itu membuat hidup lebih mudah dengan memberikan kemudahan dalam mengelola data.

Mongodb : driver asli di Node.js untuk berinteraksi dengan MongoDB.


3

Mongodb dan Mongoose adalah dua hal yang sangat berbeda!

Mongodb adalah database itu sendiri , sedangkan Mongoose adalah alat pemodelan objek untuk Mongodb

EDIT: Seperti yang ditunjukkan MongoDB adalah paket npm, terima kasih!


40
mongodb bukan database, ini paket simpul yang merupakan driver mongo asli. Ini adalah API tingkat terendah untuk mengakses server mongo dari node js.
mariocatch

3
Pertanyaan adalah tentang driver asli Mongodb untuk operasi db vs luwak. Jawabannya tidak tepat.
sarora

@mariocatch MongoDB adalah database dokumen dengan skalabilitas dan fleksibilitas yang Anda inginkan dengan kueri dan pengindeksan yang Anda butuhkan. Itu ditulis di beranda dokumentasinya.
Deep Kakkar
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.