जानकारी है कि आपके द्वारा दी गई, मैं दो संभव दृष्टिकोण की सिफारिश करेंगे, उसी नींव से शुरू के आधार पर:
उपयोग दो संग्रह (लेख और प्लेटफार्मों) और एक सरणी में मंच दस्तावेजों के लिए केवल एक संदर्भ की दुकान
- आप हवलदार: अगर दस्तावेजों
लेख पर परिभाषित मैं इस दृष्टिकोण की सिफारिश करेंगे दोनों लेख दस्तावेजों, साथ ही प्लेटफार्मों
आप स्वतंत्र रूप से दोनों संस्थाओं का प्रबंधन करने में सक्षम होना चाहते की ईए उच्च प्रमुखता, भी उन दोनों के बीच संदर्भ
// articles collection schema
{
"_id": ...,
"title": "I am an article",
...
"platforms": [ "platform_1", "platform_2", "platform_3" ],
...
}
// platforms collection schema
{
"_id": "platform_1",
"name": "Platform 1",
"url": "http://right/here",
...
},
{
"_id": "platform_2",
"name": "Platform 2",
"url": "http://right/here",
...
},
{
"_id": "platform_3",
"name": "Platform 3",
"url": "http://right/here",
...
}
इस दृष्टिकोण है यहां तक कि अगर समकालन करते हुए काफी लचीला, यह एक लागत पर आता है - यदि आपको लेख और प्लेटफार्म डेटा दोनों की आवश्यकता है, तो आपको अपने मोंगोडीबी उदाहरण के लिए और अधिक प्रश्न पूछना होगा, क्योंकि डेटा दो अलग-अलग संग्रहों में विभाजित है।
उदाहरण के लिए, जब एक लेख पेज लोड हो रहा है, यह देखते हुए कि आप भी platforms
की एक सूची प्रदर्शित करना चाहते हैं, तो आप articles collection
के लिए एक क्वेरी आग करने के लिए होता है, और फिर भी platforms collection
पर एक खोज सभी मंच को पुनः प्राप्त करने को गति प्रदान ऐसी संस्थाएं जिनके लेख article document
पर platform
एस सरणी के सदस्यों के माध्यम से प्रकाशित किए गए हैं।
हालांकि, अगर आप केवल एक छोटे सबसेट है अक्सर पहुँचा platform attributes
है कि आप जब एक article document
लोड हो रहा है, तो आप मंच के लिए _id
संदर्भ के अलावा उन विशेषताओं स्टोर करने के लिए articles collection
पर platforms
सरणी वृद्धि कर सकते हैं उपलब्ध है की जरूरत दस्तावेज:
// enhanced articles collection schema
{
"_id": ...,
"title": "I am an article",
...
"platforms": [
{platform_id: "platform_1", name: "Platform 1"},
{platform_id: "platform_2", name: "Platform 2"},
{platform_id: "platform_3", name: "Platform 3"}
],
...
}
अगर platform data attributes
कि आप अक्सर पुनः प्राप्त लेख विशिष्ट डेटा के साथ एक साथ प्रदर्शित करने के लिए वें नहीं बदल रहे हैं इस संकर दृष्टिकोण उपयुक्त होगा अक्सर
अन्यथा, आप सभी अद्यतन कि गुण है कि आप लेख दस्तावेज़ों के लिए प्लेटफार्मों सरणी के भाग के रूप में ट्रैक के सबसेट के साथ platforms collection
में platform document attributes
लिए किए जाते हैं सिंक्रनाइज़ करने के लिए होगा।
व्यक्ति प्लेटफार्मों के लिए लेख सूचियों के प्रबंधन के बारे में, मैं दोनों संग्रहों में एन-टू-एन संदर्भ स्टोर करने की अनुशंसा नहीं होगा, के रूप में ऊपर उल्लिखित तंत्र पहले से ही आप articles collection
क्वेरी करने के साथ एक खोज क्वेरी का उपयोग करके लेख सूचियों को निकालने के लिए अनुमति देता है platform document
की _id
मूल्य:
Approach #1
db.articles.find({"platforms": "platform_1"});
Approach #2:
db.articles.find({"platforms.platform_id": "platform_1"});
दो अलग दृष्टिकोण प्रस्तुत करने के बाद, आप क्वेरी पैटर्न और अपने आवेदन के प्रदर्शन थ्रेसहोल्ड का विश्लेषण करने और बनाने के लिए के लिए एक गणना परिदृश्यों के आधार पर निर्णय क्या मैं अब की सिफारिश करेंगे है कि आप मुठभेड़।
@chridam पिछले समाधान के रूप में देख रहा है, क्या आपके पास इस –