2014-05-23 6 views
6

के बिना मूल्यों में शामिल होने का सबसे अच्छा अभ्यास क्या है, मुझे यह बताकर शुरू करना है कि मैं पॉप्यूलेट विधि के बारे में जानता हूं जो मोंगोज़ ऑफ़र करता है, लेकिन चूंकि मेरे काम ने मूल मोंगोडब ड्राइवरों में जाने का निर्णय लिया है भविष्य में, मैं अब अपने लिए काम से बचने के लिए जनसंख्या पर भरोसा नहीं कर सकता।mongoose/mongodb में मूल्यों का एक गुच्छा

अगर मैं दस्तावेज़

People 
{_id:1, name:Austin} 
{_id:2, name:Doug} 
{_id:3, name:Nick} 
{_id:4, name:Austin} 

Hobbies: 
{Person: 1, Hobby: Cars} 
{Person:1, Hobby: Boats} 
{Person:3, Hobby: Chess} 
{Person:4, Hobby: Cars} 

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

+0

दूसरे की पॉप्युलेट करने के लिए नी की आईडी का उपयोग करके दो रेंज क्वेरी करना, यह क्वेरी गिनती को कम करता है लेकिन अधिक काम अनुप्रयोग अंत बनाता है, लेकिन इस तरह अधिकांश लोग इसे – Sammaye

+0

पॉप्युलेट किए बिना करते हैं, यह भी ध्यान रखें कि पॉप्युलेट वास्तव में एक प्रश्न है दस्तावेज़ – Sammaye

उत्तर

1

यह आपकी प्राथमिक चिंता पर निर्भर करता है।

{ 
    "_id":1, 
    "name":"Austin", 
    "hobbies": [ 
    "Cars","Boats" 
    ] 
}, 
{ 
    "_id":2, 
    "name":"Doug", 
    "hobbies": [] 
}, 

{ 
    "_id":3, 
    "name":"Nick", 
    "hobbies": [ 
    "Chess" 
    ] 
}, 

{ 
    "_id":4, 
    "name":"Austin", 
    "hobbies": [ 
    "Cars" 
    ] 
} 

जो आप hobbies पर एक बहु बंद सूचकांक उपयोग करने की संभावना देने के लिए और अनुमति होगी इस तरह के प्रश्नों: आम तौर पर, मैं लोगों में शौक एम्बेड करने के लिए, की तरह कह सकते हैं कि

db.daCollection.find({"hobbies":"Cars"}) 

जो ऑस्टिन दोनों को पूर्ण दस्तावेज के रूप में वापस कर देगा। हां, मुझे पता है कि बहुत सारी अनावश्यक प्रविष्टियां होंगी। आपको लगता है कि को रोकने की कोशिश करेंगे, तो इस तरह यह मॉडल सकता है:

{ 
    "_id": 1, 
    "name":"Cars" 
},... 

{ 
    "_id":1, 
    "name":"Austin", 
    "hobbies": [ 
    1, ... 
    ] 
} 

जो शौक के नाम के मैदान पर एक अतिरिक्त सूचकांक की आवश्यकता होगी कुशल होने के लिए। तो जब आप हर व्यक्ति जो कारों में है पता लगाना चाहते हैं, तो आप मैं तेजी से करता है, तो आप का उपयोग लगता है कि यह आसान, अधिक सहज ज्ञान युक्त है और सबसे उपयोग के मामलों के लिए

db.person.find({"hobbies":1}) 

तरह _id और इसके लिए क्वेरी खोजने की आवश्यकता होगी एम्बेडिंग

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

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