Mongoose - หลายสคีมาโดยใช้คอลเลกชันเดียว

ฉันกำลังพยายามวางแผน API ของฉัน เช่น:

/animals           // returns all animals
/animals/dogs      // returns all dogs
/animals/cats      // returns all cats
/animals/dogs/:id  // returns dog

ดังนั้นฉันจึงมีโมเดลแยกสำหรับทั้ง 'cat' และ 'dog' เนื่องจากพวกมันจะมีคุณสมบัติเฉพาะตัว แต่ทั้งคู่ก็ใช้สคีมา 'animal' เป็นปลั๊กอินพื้นฐาน

คำถามของฉันคือจะจัดเก็บข้อมูลไว้ที่ไหน ตัวเลือกของฉันคือ:

1) คอลเลกชันเดี่ยว - เก็บทั้งแมวและสุนัขไว้ในคอลเลกชันเดียว ซึ่งจะทำให้การรับข้อมูลสำหรับ '/สัตว์' ค่อนข้างง่ายด้วยแบบสอบถามเดียว

2) คอลเลกชันหลายรายการ - เก็บทั้งแมวและสุนัขไว้ในแต่ละคอลเลกชัน ซึ่งจะทำให้การจัดเก็บข้อมูลมีเหตุผลมากขึ้น อย่างไรก็ตาม เมื่อได้รับข้อมูลสำหรับ '/สัตว์' จะต้องมีการสืบค้นหลายครั้งและต่อข้อมูลนั้นเข้าด้วยกัน

มีตัวเลือกอื่นใดที่ฉันพลาดไปหรือแนวทางที่ต้องการหรือไม่

ขอบคุณ


person leepowell    schedule 02.12.2012    source แหล่งที่มา


คำตอบ (2)


ตัวเลือกที่คุณกล่าวถึงเป็นแนวทางที่เหมาะสมที่สุดสำหรับปัญหาของคุณ

สำหรับกรณีเฉพาะของคุณ หากคุณสมบัติเฉพาะของแต่ละรุ่นไม่ได้ไปตามวิธีที่ 1 จัดเก็บข้อมูลทั้งหมดไว้ในคอลเลกชันเดียวและสืบค้นได้อย่างง่ายดาย

มิฉะนั้น หากโมเดลของคุณค่อนข้างหนักและมีคุณสมบัติจำนวนมาก แยกพวกมันออกเป็นคอลเลกชั่นต่างๆ และค้นหาพวกมันตามโมเดลที่เกี่ยวข้อง ดูเหมือนว่างานนี้จะต้องทำมากกว่านี้ แต่อย่างน้อยก็จะทำให้คุณมีนามธรรมและความยืดหยุ่นในการจัดการกับโมเดลหนักๆ มากขึ้น ความหมายไปกับตัวเลือกที่ 2

person Serdar Dogruyol    schedule 02.12.2012
comment
ฉันอยู่จุดเดียวกับลีโพเวลล์ แต่คำถามของฉันเกี่ยวกับคำตอบของคุณ ถ้าผมจะเลือก #1 นิยามของคุณไม่ใหญ่โตขนาดนั้นจะเป็นอย่างไร?? ฉันรู้ว่าคุณไม่สามารถรับองค์ประกอบเฉพาะจำนวนนับไม่ถ้วนได้ แต่มีหมายเลขสนามเบสบอลที่คุณจะแนะนำให้เลือกหมายเลข 2 มากกว่าหมายเลข 1 หรือไม่? ฉันกำลังพัฒนาฐานข้อมูลที่จะมีองค์ประกอบเฉพาะของวัตถุหลักสูตรการเรียนรู้ทางไกล ทั้งที่ใช้งานและกำลังพัฒนา หรือ 'เบรกพอยต์' ระหว่างอันดับ 1 ถึงอันดับ 2 ของการตั้งค่าของนักพัฒนา? - person Energetic Pixels; 06.08.2015

สิ่งที่ดีเกี่ยวกับ mongodb ก็คือว่ามันไม่มีสคีมา ฟังดูเหมือนเป็นสิ่งที่คุณต้องการจริงๆ ฉันจะพิจารณาใช้ node-mongodb-native ธรรมดา และเก็บสัตว์ทั้งหมดไว้ใน คอลเลกชันเดียว

person Octavio Ben-Aharon    schedule 02.12.2012