2010-10-17 13 views
28

मेरे पास Author और Book मॉडल हैं।मोंगोइड/मोंगोडब और एम्बेडेड दस्तावेजों से पूछताछ

एक Author में कई एम्बेडेड Books हैं।

क्या मैं एम्बेडेड Books से पूछताछ कर सकता हूं, या मुझे Books प्राप्त करने के लिए पहले Authors लाने की ज़रूरत है?

उत्तर

43

आप एम्बेडेड दस्तावेज़ों से पूछ सकते हैं, बस नाम को अर्हता प्राप्त करें। अब, यह उन सभी लेखकों को वापस कर देगा जिनके पास आपकी क्वेरी से मेल खाने वाली किताबें हैं।

तो लेखक कई होने के रूप में परिभाषित किया गया है: (पुस्तक एक एम्बेडेड :: दस्तावेज है और) किताबें

@authors_with_sewid = Author.where("books.name" => "sewid").all 

फिर आप लेखकों से अधिक पुनरावृति और पुस्तकों को निकालने के लिए आवश्यकता होगी।

+0

ठीक है, बहुत बहुत धन्यवाद। क्या होगा यदि मेरे पास एम्बेडेड और संदर्भित दस्तावेज़ों का मिश्रण है, तो क्या मैं संदर्भित दस्तावेज़ों के लिए भी पूछ सकता हूं? उदाहरण के लिए, लेखक मॉडल में एक निर्माता-फ़ील्ड होता है, जिसमें उपयोगकर्ता की आईडी होती है। क्या यह संभव है 'लेखक। कहीं ("book.name" = "sewid")। और ("creator.username" => "example")'? एक पहली कोशिश विफल रही। – sewid

+0

एक बार जब वे ऑब्जेक्ट्स संदर्भित होते हैं, तो आपको एक जॉइन की आवश्यकता होगी। और मोंगोडब भूमि में कोई जुड़ाव नहीं है। –

+2

उस मामले में करने के लिए सबसे अच्छी बात यह है कि अपने डेटा को denormalize और लेखक के साथ निर्माता उपयोगकर्ता नाम स्टोर करें। – Nader

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