MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

कई से कई मॉडलिंग:मोंगोइड/मोंगोडीबी के माध्यम से

एक अच्छा मोंगोडब स्कीमा मॉडलिंग वास्तव में इस बात पर निर्भर करता है कि आप अपने डेटा तक कैसे पहुंचते हैं। आपके वर्णित मामले में, आप अपने Memberships.user_id कुंजी को अनुक्रमित करेंगे जो ठीक लगता है। लेकिन जैसे-जैसे आप दर्शकों, संपादकों और प्रशासकों को जोड़ेंगे, आपके दस्तावेज़ का आकार बढ़ता जाएगा। साथ ही, आपका स्कीमा इस तरह की क्वेरी करना मुश्किल बना देगा:

क्वेरी प्रोजेक्ट, जहां user_id xxx संपादक है:

दोबारा, आपको शायद इस तरह की परियोजनाओं से पूछताछ करने की आवश्यकता नहीं है, इसलिए आपकी स्कीमा ठीक दिखती है। लेकिन अगर आपको user_id और भूमिका के आधार पर अपनी परियोजनाओं को क्वेरी करने की आवश्यकता है, तो मैं आपको 'project_membership' संग्रह बनाने की सलाह दूंगा:

db.project_memberships.insert(
  { 
    "project_id" : ObjectId("4d730fcfcedc351d67000032"),
    "editors" : [
      ObjectId("4d730fcfcedc351d67000002"),
      ObjectId("4d730fcfcedc351d67000004")
    ],
    "viewers" : [
      ObjectId("4d730fcfcedc351d67000002"),
      ObjectId("4d730fcfcedc351d67000004"),
      ObjectId("4d730fcfcedc351d67000001"),
      ObjectId("4d730fcfcedc351d67000005")
    ],
    "administrator" : [
      ObjectId("4d730fcfcedc351d67000011"),
      ObjectId("4d730fcfcedc351d67000012")
    ]
  }
)

db.project_memberships.ensureIndex({"editors": 1})
db.project_memberships.ensureIndex({"viewers": 1})
db.project_memberships.ensureIndex({"administrator": 1})

या इससे भी आसान... अपने प्रोजेक्ट स्कीमा पर एक अनुक्रमणिका जोड़ें:

db.projects.ensureIndex({"memberships.role": 1})



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मान के लिए किसी अन्य क्वेरी के साथ जियोनियर क्वेरी को संयोजित करें

  2. शेल स्क्रिप्ट - चेक मोंगोड सर्वर चल रहा है

  3. MongoDb . में CSV फ़ाइल आयात करें (इसमें कुछ गैर-UTF8 वर्ण हैं)

  4. एक गहरे नेस्टेड दस्तावेज़ क्वेरी में MongoDB के स्थितीय ऑपरेटर $ का उपयोग करना

  5. PHP मोंगोडब ड्राइवर कनेक्शन की जाँच करें