2010-11-19 13 views
7

मूल रूप से Grails मेलिंग सूची पर तैनात ...Grails MongoDB प्लगइन: एंबेडेड संग्रह बनाम संदर्भ

मैं आम तौर पर एक डेटाबेस पुरुष लेकिन grails के लिए नवीनतम MongoDB प्लगइन के रिलीज के साथ नहीं कर रहा हूँ, मैं क्या देखना चाहता था बड़ा सौदा NoSQL डेटाबेस के साथ है। MongoDB बहुत दिलचस्प लगता है। मैं दस्तावेज़ उन्मुख संग्रहण पर जानकारी पढ़ रहे हैं और इस परिदृश्य में आए किया गया था:

ग्राहक/आदेश/आदेश पंक्ति वस्तु

दस्तावेज़ कहते हैं आदेश एक संग्रह होना चाहिए। ग्राहकों को एक संग्रह। लाइन-ऑब्जेक्ट्स ऑब्जेक्ट ऑब्जेक्ट में एम्बेडेड लाइन-आइटम की सरणी होनी चाहिए।

गोर्म के संबंध में, यह पैटर्न कैसे सुनिश्चित किया जाता है? मेरे पास आमतौर पर निम्नलिखित होंगे:

class Customer { 
    static hasMany = [orders: Order] 
} 

class Order { 
    static hasMany = [orderItems: OrderItem] 
    static belongsTo = [customer:Customer] 
} 

class OrderItem { 
    static belongsTo = [order:Order] 
} 

मैं कैसे सुनिश्चित कर सकता हूं कि ऑर्डर ग्राहक का अपना संग्रह है और ग्राहक के भीतर एम्बेडेड नहीं है? यदि यह डिफ़ॉल्ट है, तो मैं कैसे सुनिश्चित कर सकता हूं कि ऑर्डर इटम्स ऑर्डर में एम्बेडेड हैं और यह स्वयं का संग्रह नहीं है? यहां डिफ़ॉल्ट क्या है?

धन्यवाद।

उत्तर

10

Grails MongoDB प्लगइन दस्तावेज़ों को पढ़ने से, ऐसा लगता है कि आपको विशेष रूप से एम्बेडेड ऑब्जेक्ट्स घोषित करने की आवश्यकता है, संदर्भ डिफ़ॉल्ट हैं।

इसी के साथ

मन में, आपको यह सुनिश्चित है कि आदेश का अपना संग्रह होने की बनाना चाहते और OrderItems एम्बेड करने के लिए हैं, तो यह प्रयास करें:

class Customer { 
    List<Order> orders 
} 

class Order { 
    List<OrderItem> orderItems 
    static embedded = [ 'orderItems' ] 
} 

class OrderItems { 
    // properties go here. 
} 

Here's the documentation.

+0

हाय, यह उत्तर उपयोगी है, लेकिन यह वास्तव में सवाल का जवाब नहीं देता है - यह केवल उत्तर खोजने पर दिशा प्रदान करता है। विशेष रूप से, मैं अभी भी इस बात पर स्पष्ट नहीं हूं कि "हैमनी" जैसी चीजें एक मोंगोडब संदर्भ में उपयोग की जाएंगी (मैं अनुमान नहीं लगा रहा हूं), और यदि नहीं, तो डोमेन वर्ग में यह वास्तव में कैसे निर्दिष्ट किया जाना चाहिए कि संग्रह हैं सही ढंग से mongodb में संग्रहीत। मुझे लगता है कि अगर ग्रेग का सवाल है ("मैं कैसे सुनिश्चित कर सकता हूं कि आदेश ... आदेश में एम्बेडेड है और यह स्वयं का संग्रह नहीं है? यहां डिफ़ॉल्ट क्या है?") स्पष्ट रूप से उत्तर दिया गया है, जो सीखने के लिए एक अच्छा उदाहरण के रूप में कार्य करेगा। – mindthief

+1

@ मिंडथिफ़: प्रश्न का उत्तर देने में उत्तर को थोड़ा और स्पष्ट करने के लिए अपडेट किया गया। साथ ही, मेरा मानना ​​है कि "हैमनी" एक रिलेशनल डेटाबेस प्रकार की अवधारणा से अधिक है, यही कारण है कि मोंगोडीबी इसका उपयोग नहीं करता है। – Pat

+0

... धन्यवाद पैट !! – mindthief

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