ความแตกต่างระหว่าง 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-shell อย่างเช่นประสบการณ์ใน Node.js จากนั้นไปข้างหน้าและใช้ไดรเวอร์ MongoDB มันเป็นวิธีที่ง่ายที่สุดในการรับ ข้อเสียที่นี่คือคุณจะต้องเขียนโค้ดจำนวนมากเพื่อตรวจสอบความถูกต้องของข้อมูลและความเสี่ยงของข้อผิดพลาดจะสูงขึ้น


9
นั่นเป็นคำถามที่อิงตามความคิดเห็น บางคนอาจชอบ API ระดับล่าง ทำไมคุณไม่ลองดูMongooseและคนขับรถก่อนแล้วตัดสินใจว่าอันไหนดีกว่าสำหรับคุณ
juunas

1
@ Michael9 ไดรเวอร์ MongoDB ดั้งเดิมสำหรับ Node.js มีชื่อเดียวกัน โปรดสังเกตคำว่า 'ในแง่ของ Node.js ... ' การแก้ไขของคุณไม่ถูกต้อง
ZeMoon

@ZeMoon ในกรณีนี้มันควรจะเป็นmongodbไม่ได้MongoDB: P
styvane

จะมีความแตกต่างในทางปฏิบัติที่พังพอนเชื่อมโยงกับชื่อคอลเลกชันเป็นพหูพจน์หรือไม่?
Antony Gibbs

2
เราควรคำนึงถึงปัจจัยด้านประสิทธิภาพด้วยโปรดอ้างอิง url นี้ผู้ชายคนนี้ได้ใช้เกณฑ์มาตรฐานที่ยอดเยี่ยม medium.com/@bugwheels94/…
DHIRAJ KATEKAR

46

Mongo เป็นฐานข้อมูล NoSQL

หากคุณไม่ต้องการที่จะใช้ใด ๆออมสำหรับรุ่นที่ข้อมูลของคุณแล้วคุณยังสามารถใช้ mongo.js ไดรเวอร์พื้นเมือง: https://github.com/mongodb/node-mongodb-native

พังพอนเป็นหนึ่งใน orm ที่ทำให้เราใช้งานฟังก์ชั่นในการเข้าถึงข้อมูล Mongo ด้วยคำสั่งที่เข้าใจได้ง่าย

พังพอนมีบทบาทเป็นนามธรรมในแบบจำลองฐานข้อมูลของคุณ


1
@ArslanRamay: medium.com/@bugwheels94/ , มีประโยชน์มาก
DHIRAJ KATEKAR

14

ความแตกต่างอีกอย่างหนึ่งที่ฉันพบเกี่ยวกับทั้งสองคือมันค่อนข้างง่ายที่จะconnect to multiple databasesใช้mongodb native driverในขณะที่คุณต้องใช้การทำงานmongooseที่ยังมีข้อเสียอยู่บ้าง

ดังนั้นหากคุณต้องการใช้แอพพลิเคชั่นที่หลากหลายให้ไปหาคนขับ MongoBb


6

หากคุณวางแผนที่จะใช้ส่วนประกอบเหล่านี้พร้อมกับรหัสกรรมสิทธิ์ของคุณโปรดอ้างอิงข้อมูลด้านล่าง

MongoDB:

  1. มันเป็นฐานข้อมูล
  2. ส่วนนี้ถูกควบคุมโดยใบอนุญาต Affero General Public (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 เป็นเพียงนอกจากนี้สำหรับระบบคลาวด์ฐานข้อมูล as-a-การบริการผู้ขายข้อคือการเปิดเผยฐานข้อมูลคุณสมบัติคล้ายกับ MongoDB Atlas หรือ AWS RDS ฯลฯ
Wan Bachtiar

6

mongo-dbไม่น่าจะเป็นทางเลือกที่ดีสำหรับนักพัฒนาใหม่
ในทางกลับกันmongooseในฐานะ ORM (การทำแผนที่วัตถุสัมพันธ์) สามารถเป็นทางเลือกที่ดีกว่าสำหรับผู้เริ่มใหม่


2
ยินดีต้อนรับสู่ Stack Overflow! คำตอบของคุณอาจมีค่า แต่ไม่มีคำอธิบายบางอย่าง บางทีคุณยังสามารถเพิ่มคำลงในคำตอบของคุณได้ นี่คือคู่มือที่จะให้คำตอบที่ดี
David

4

Mongodb และ Mongoose เป็นสองไดรเวอร์ที่แตกต่างกันในการโต้ตอบกับฐานข้อมูล MongoDB

Mongoose : ไลบรารี data data modeling (ODM) ที่จัดเตรียมสภาพแวดล้อมการทำโมเดลที่เข้มงวดสำหรับข้อมูลของคุณ ใช้ในการโต้ตอบกับ MongoDB ทำให้ชีวิตง่ายขึ้นโดยมอบความสะดวกสบายในการจัดการข้อมูล

Mongodb : โปรแกรมควบคุมเนทิฟใน Node.js เพื่อโต้ตอบกับ MongoDB


3

Mongodb และ Mongoose เป็นสองสิ่งที่แตกต่างอย่างสิ้นเชิง!

Mongodb เป็นฐานข้อมูลในขณะที่ Mongoose เป็นเครื่องมือสร้างแบบจำลองวัตถุสำหรับ Mongodb

แก้ไข: ดังที่ MongoDB ชี้ให้เห็นคือแพ็คเกจ npm ขอบคุณ!


40
mongodb ไม่ได้เป็นฐานข้อมูลมันเป็นแพ็คเกจโหนดซึ่งเป็นไดรเวอร์ของ Mongo ดั้งเดิม มันเป็น API ระดับต่ำสุดสำหรับการเข้าถึงเซิร์ฟเวอร์ Mongo จากโหนด js
mariocatch

3
คำถามเกี่ยวกับไดรเวอร์ Mongodb สำหรับการทำงานของฐานข้อมูลกับ Mongoose คำตอบไม่ได้อยู่ในจุด
sarora

@mariocatch MongoDB เป็นฐานข้อมูลเอกสารที่มีความยืดหยุ่นและยืดหยุ่นตามที่คุณต้องการด้วยการสืบค้นและการทำดัชนีที่คุณต้องการ มันเขียนไว้ในโฮมเพจของเอกสารประกอบ
Deep Kakkar
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.