2015-02-09 1 views
6

मैं एक संग्रह है कि एक क्षेत्र में एक और संग्रह से दस्तावेजों का संदर्भ देता है इस प्रकार की तरह शामिल है कहते हैं:क्या मोंगोस में प्रक्षेपण के साथ पॉप्युलेट करने का कोई तरीका है?

_id | className | teacher | building | time | days | classNumber | description 
------------------------------------------------------------------------------ 

:

ClassEnrollment

_id | student | class 
--------------------- 

और कक्षा संग्रह में कक्षाएं निम्न स्कीमा है अगर मेरे पास 3000 कक्षाओं का एक सेट है, तो मैं सर्वर पर पॉप्युलेट करना चाहता हूं, मैं कुछ ऐसा कर सकता हूं जैसे ClassEnrollment.populate(listOfClassEnrollments, {path: 'class'});

मेरी स्थिति में, मैं कक्षा वर्ग के बहुमत के बजाय, सिर्फ नाम नहीं चाहता हूं। यदि मुझे सभी क्षेत्रों के साथ डीबी से 3000 वर्गों की सूची मिलती है, तो मैं नेटवर्क विलंबता के रूप में प्रदर्शन हिट लेता हूं (इन 3000 वर्गों को होस्टेड डीबी से सर्वर पर स्थानांतरित किया जाना चाहिए, जो 50 एमबी हो सकता है कच्चे डेटा यदि विवरण लंबे हैं)

क्या कक्षा नामांकन की सूची को पॉप्युलेट करने के विकल्प के माध्यम से नाम के साथ पॉप्युलेट करने का कोई तरीका है (दृश्यों के पीछे मुझे लगता है कि यह प्रक्षेपण की तरह काम करेगा, इसलिए डीबी बस जवाब देता है सभी वर्ग की जानकारी के बजाय कक्षा का नाम और _id के साथ)?

उत्तर

8

आप यह करने के लिए अपने populate कॉल में select विकल्प का उपयोग कर सकते हैं:

ClassEnrollment.populate(listOfClassEnrollments, {path: 'class', select: 'className'}); 
+0

यह मैं वास्तव में क्या ढूंढ रहा था। धन्यवाद! – Asksdumbquestions

+0

और यदि आप एकाधिक चुनना चाहते हैं, तो सीमित स्थान का उपयोग करें: '' कक्षा नाम शिक्षक इमारत ' – steampowered

संबंधित मुद्दे