हां यह संभव है, लेकिन आपके पास कुछ विकल्प हैं।
विकल्प 1:C उप-दस्तावेज़ के रूप में
यदि आप वास्तव में उप-दस्तावेज़ों का उपयोग करना चाहते हैं, तो आपको एक अलग मॉडल बनाने की आवश्यकता नहीं है। आपको अपना संदर्भ 'c' सरणी में बदलना होगा।
var C = new Schema({...});
var B = new Schema({c: [C]});
var A = new Schema({c: { type: ObjectId, ref: 'ModelB.c' });
var Model_A = mongoose.model('ModelA', A);
var Model_B = mongoose.model('ModelB', B);
विकल्प 2:C एक मॉडल के रूप में
(मैं इसे केवल एक विकल्प के रूप में प्रस्तुत करता हूं - चूंकि आपका उदाहरण बेमानी लगता है क्योंकि आप 'सी' को एक अलग मॉडल के साथ-साथ एक उप-दस्तावेज़ के रूप में बनाते हैं)
वैकल्पिक रूप से, अलग-अलग संग्रह रखने का अर्थ हो सकता है, आप प्रत्येक के लिए एक नेवला मॉडल बना सकते हैं। प्रत्येक एक अलग संग्रह होगा:
var Model_A = mongoose.model('ModelA', A);
var Model_B = mongoose.model('ModelB', B);
var Model_C = mongoose.model('ModelC', C);
इस मामले में आप प्रत्येक मॉडल को सीधे संदर्भित करना चाह सकते हैं:
var C = new Schema({...});
var B = new Schema({c: { type: ObjectId, ref: 'ModelC' }});
var A = new Schema({c: { type: ObjectId, ref: 'ModelC' });
बिंदु
हाँ यह संभव है, लेकिन आपको यह चुनना होगा कि क्या आप C को एक मॉडल या उप-दस्तावेज़ के रूप में चाहते हैं।