2010-01-26 19 views
27

में एम्बेड किए गए दस्तावेज़ों को फ़िल्टर करना मुझे मोंगोडीबी में एम्बेडेड दस्तावेज़ों को फ़िल्टर करने का तरीका समझने में परेशानी हो रही है, और मुझे लगता है कि मुझे एक रिलेशनल एसोसिएशन का उपयोग करना चाहिए, लेकिन दस्तावेज़-स्टोर संदर्भ में यह गलत लगता है।MongoDB

एक विशिष्ट ब्लॉग/टिप्पणी प्रणाली के साथ चिपके हुए, मेरे पास blogs का संग्रह है, और प्रत्येक blog में कई comments हैं। टिप्पणियां ब्लॉग दस्तावेज़ के अंदर एम्बेडेड दस्तावेज़ों के रूप में संग्रहीत की जाती हैं।

यह क्रम में फिल्टर करने के लिए मेरी comments प्रत्येक blog में एम्बेडेड फिल्टर करने के लिए मेरी blogs संग्रह बहुत सरल है, लेकिन, मैं उन सभी को स्मृति में लोड करने के लिए हो रहा है (एक रूबी सरणी में सभी को पुनः प्राप्त), और प्रत्येक टिप्पणी के माध्यम से लूप, लौटने वाले जो एक विशिष्ट मानदंड से मेल खाते हैं।

डॉट नोटेशन का उपयोग करके एम्बेडेड दस्तावेज़ों को फ़िल्टर करने के मेरे प्रयास विफल हो रहे हैं, और सभी उप दस्तावेजों को वापस ला रहे हैं।

क्या मेरे लिए इन्हें फ़िल्टर करने के लिए मोंगोडीबी प्राप्त करने का एक बेहतर तरीका है, या क्या मुझे खुद को संबंधों के संबंध में इस्तीफा देना चाहिए? (सभी एम्बेडेड दस्तावेज़ों को वापस खींचकर मैन्युअल रूप से फ़िल्टरिंग लंबे समय तक बहुत गहन होने जा रही है)

उत्तर

22

वर्तमान में एम्बेडेड दस्तावेज़ों को फ़िल्टर करने के तरीके पर फ़िल्टर करने का कोई तरीका नहीं है। डॉट नोटेशन का उपयोग करने से आप एक एम्बेडेड दस्तावेज़ पर मिलान कर सकते हैं, लेकिन पूरे दस्तावेज़, माता-पिता और सभी, अभी भी वापस आ जाएंगे। यह भी चुनना संभव है कि कौन से फ़ील्ड लौटाए जाएंगे, लेकिन यह वास्तव में आपके मामले में भी मदद नहीं करता है।

हमारे पास "वर्चुअल संग्रह" केस है, जो वांछित कार्यक्षमता को लागू करेगा; उस पर वोट करने के लिए स्वतंत्र महसूस:

http://jira.mongodb.org/browse/SERVER-142

इस दौरान, आप शायद अपने स्वयं के संग्रह के रूप में टिप्पणी व्यवहार करना चाहिए। आम तौर पर, यदि आपको किसी दिए गए डेटा सेट के साथ काम करने की ज़रूरत है, तो इसे एक संग्रह बनाएं। अगर यह किसी अन्य सेट के हिस्से के रूप में बेहतर माना जाता है, तो यह एम्बेड करना बेहतर है।

+0

धन्यवाद केबी - अपने आप संग्रह के साथ चला गया है, ऐसा लगता है कि अभी तक ठीक काम कर रहा है; बस इसे थोड़ा परीक्षण करने की जरूरत है। – kez

+0

कूल। यह अभी भी कुशल होना चाहिए। –

+13

"आभासी संग्रह" इस बहुत आवश्यक आवश्यकता के लिए एक महान ओवरकिल नहीं है? मैं सिर्फ उत्सुक हूं - केवल एक विशिष्ट एम्बेडेड दस्तावेज़ को विकसित करने की क्षमता नहीं है क्योंकि इसे विकसित नहीं किया जा रहा है या क्योंकि यह जटिल है? – idophir