MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

mongoose - ObjectId जो उप-दस्तावेज़ का संदर्भ देता है

हां यह संभव है, लेकिन आपके पास कुछ विकल्प हैं।

विकल्प 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 को एक मॉडल या उप-दस्तावेज़ के रूप में चाहते हैं।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. ढूंढें ({}) एक खाली सरणी नेवला देता है

  2. बहु-दस्तावेज़ लेनदेन में नाम स्थान नहीं बना सकता (MongoDB 4.0, स्प्रिंग डेटा 2.1.0, स्प्रिंग बूट)

  3. $लुकअप जब विदेशी फ़ील्ड सरणी है

  4. FindOneAndUpdate विधि से अद्यतन दस्तावेज़ वापस कैसे प्राप्त करें?

  5. नेवला मॉडल अद्यतन () बनाम सहेजें ()