2011-05-30 13 views
11

मेरे पास मोंगो डीबी में कुछ डेटा है जो इस तरह दिखता है:क्या मोंगोस केवल सरणी में एम्बेड किए गए दस्तावेज़ों का समर्थन करता है?

{ 
    name: "Steve", 
    location: { 
     city: "Nowhere, IL", 
     country: "The United States of Awesome" 
    } 
} 

मैं सामान्य डेटा संरचनाओं (जैसे स्थानों) को व्यवस्थित करने के लिए ऑब्जेक्ट्स का उपयोग कर रहा हूं, जो मोंगोस में स्कीमा के लिए अच्छी तरह से मानचित्र कर सकता है। दुर्भाग्यवश, वे वास्तव में मोंगोस में काम नहीं करते हैं।

अगर मैं सिर्फ एक ऑब्जेक्ट एम्बेड करता हूं, तो इस तरह:

{ 
    name: String, 
    location: { 
     city: String, 
     country: String 
    } 
} 

ऐसा लगता है, लेकिन कुछ विचित्र व्यवहार दिखाता है जो मेरे लिए समस्याएं पैदा करता है (उदाहरण के लिए instance.location.locationlocation लौटाता है, और subobjects मूल स्कीमा से विधियों का वारिस करता है)। मैं xox49 Mongoose सूची पर, लेकिन यह कोई कार्रवाई नहीं देखा है।

अगर मैं स्कीमा एम्बेड करता हूं, तो इस तरह:

{ 
    name: String, 
    location: new Schema({ 
     city: String, 
     country: String 
    }) 
} 

... मेरा एप्लिकेशन शुरू नहीं होता है (Schema मोंगोस द्वारा समर्थित एक प्रकार नहीं है)। Xzx69

{ 
    name: String, 
    location: Object 
} 

के लिए Ditto ... जो वैसे भी आदर्श नहीं होगा।

क्या मुझे कुछ याद आ रहा है या मेरे स्कीमा मोंगोस के साथ जिंदा नहीं हैं?

+1

यहां दस्तावेज़ों में एक नज़र डालें -> http://mongoosejs.com/docs/embedded-documents.html। –

+1

@ एंड्रयू मेरे पास है। तुम मुझे क्या दिखा रहे हो मैंने नोटिस किया कि यह कहता है, * "एम्बेडेड दस्तावेज अपने स्वयं के स्कीमा के साथ दस्तावेज़ हैं जो अन्य दस्तावेजों (एक सरणी के भीतर वस्तुओं के रूप में) का हिस्सा हैं।" * क्या इसका मतलब यह है कि मोंगोस मेरे जैसे स्कीमा का समर्थन नहीं करता है? – s4y

उत्तर

1

यह इस was a bug की तरह लग रहा है, यह निर्धारित किया गया है Mongoose 2.0 में!

3

मैं कुछ इसी तरह की थी। हालांकि, सरणी ब्रैकेट को हटाने से एक त्रुटि हुई। मुझे एक बग की तरह लग रहा है। जो उद्देश्य, स्कीमा/index.js पर प्रतीत होता है कि यह की तरह नहीं दिखता -

https://github.com/LearnBoost/mongoose/blob/master/lib/mongoose/schema.js#L185

डम्पिंग प्रकार, मैं सिर्फ स्ट्रिंग, संख्या, बूलियन, DocumentArray, सरणी, तिथि, ObjectId, मिश्रित मिल गतिशील रूप से नई स्कीमा को प्रकार की सूची में पंजीकृत करता है, इसलिए मुझे लगता है कि यह एक समर्थित उपयोग केस नहीं है, अभी तक।

https://github.com/LearnBoost/mongoose/issues/188

"एकल डॉक्स एम्बेड सवाल से बाहर है। यह (बस नियमित नेस्टेड वस्तुओं का उपयोग करें) एक अच्छा विचार नहीं है"

जोश

+0

दिलचस्प! तो ऐसा लगता है कि "नियमित नेस्टेड ऑब्जेक्ट्स" (पहली चीज मैंने कोशिश की) उनमें से कुछ भी टूट गए हैं। मैंने बस [एक मुद्दा दायर किया] [https://github.com/LearnBoost/mongoose/issues/366)। – s4y

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