2013-02-05 18 views
36

मेरे पास एक मोंगो डेटाबेस है जिसे मैंने नहीं बनाया या आर्किटेक्ट किया है, क्या डीबी का आत्मनिरीक्षण करने का कोई अच्छा तरीका है या प्रिंट करना है कि किस प्रकार के हैंडल को संभालने के लिए संरचना शुरू करना है डेटा संग्रहीत किया जा रहा है, कैसे डेटा प्रकार घोंसला है, आदि?मैं एक मोंगो डेटाबेस की संरचना कैसे खोज सकता हूं

उत्तर

19

वहाँ वास्तव में आप मदद करने के लिए विभिन्न प्रकार के यहाँ कहा जाता है एक उपकरण है:

http://blog.mongodb.org/post/21923016898/meet-variety-a-schema-analyzer-for-mongodb

आप Github रेपो इसके लिए यहाँ देख सकते हैं: https://github.com/variety/variety

मैं शायद आपको चेतावनी चाहिए कि:

  • यह अपने कार्यों को पूरा करने के लिए एमआर का उपयोग करता है
  • यह कुछ ओ का उपयोग करता है थर्म प्रश्न जो प्रदर्शन के मामले में एक नजदीक के लिए एक उत्पादन सेट अप ला सकता है।

जैसा कि मैं आपको सलाह देता हूं कि आप इसे विकास सर्वर या प्रतिकृति या किसी छिपे हुए नोड पर चलाएं।

अपने दस्तावेज़ों के आकार और गहराई के आधार पर इसे आपके डेटाबेस की किसी न किसी संरचना को समझने में बहुत लंबा समय लग सकता है लेकिन अंततः यह एक देगा।

+4

नया यूआरएल, और इसे हाल ही में 2014-10-14 के रूप में अपडेट किया गया है। https://github.com/variety/variety विविधता, मोंगोडीबी के लिए एक स्कीमा विश्लेषक। बहुत उपयोगी! – AnneTheAgile

22

बस मोंगो खोल में निम्न कमांड चलाकर डेटाबेस क्वेरी:

use mydb //this switches to the database you want to query 
show collections //this command will list all collections in the database 
db.collectionName.find().pretty() //this will show all documents in the database in a readable format; do the same for each collection in the database 

फिर आप दस्तावेज़ संरचना की जांच करने के लिए सक्षम होना चाहिए।

+1

क्या होगा यदि कुछ दस्तावेज़ दूसरों के लिए अलग हैं? वह विधि सभी फ़ील्ड या संग्रहित संपूर्ण संरचना को नहीं दिखाएगी। – Sammaye

+0

@Sammaye आप सही हैं ... इसे सभी दस्तावेज़ों तक पहुंचने के लिए एक स्क्रिप्ट की आवश्यकता होगी और सभी चाबियों की तुलना करने के बाद एक पेड़ संरचना मुद्रित करें, शायद पूरी संरचना को दिखाने और इसे पचाने योग्य बनाने के लिए एक अच्छा दृश्य तरीका है – br3w5

+1

@Sammaye @ssbrewster: आप अपने संग्रह के लिए संरचना प्राप्त करने के लिए [this] (https://gist.github.com/hkasera/9386709) स्क्रिप्ट का उपयोग कर सकते हैं। अगर यह सहायक है तो मुझे बताएं। 'mongo mongo-struc.js> struc.json' – hkasera

4

मैं एक अप्रतिबंधित खोज कमांड जारी करने के बजाय परिणाम सेट को सीमित करने की अनुशंसा करता हूं।

use mydb 
db.collectionName.find().limit(10) 
var z = db.collectionName.find().limit(10) 
Object.keys(z[0]) 
Object.keys(z[1]) 

इससे आपको अपनी डेटाबेस संरचना या इसकी कमी को समझने में मदद मिलेगी।

+0

एकमात्र समस्या यह है कि ऐसा कोई तरीका नहीं है कि आप जिस नंबर पर वापस आते हैं वह डेटाबेस संरचना का प्रतिनिधित्व करता है, आपके पास 1000001 रिकॉर्ड हो सकते हैं और उनमें से 1000000 पर सीमा हो सकती है लेकिन अंतिम दस्तावेज़ में मौजूदा फ़ील्ड को याद नहीं है क्योंकि अन्य 1000000 में यह नहीं है – Sammaye

+0

मैं आपके साथ सहमत हूं। हालांकि एक त्वरित और गंदे के लिए यह पर्याप्त हो सकता है। मुझे कई प्रयोग मामलों के बारे में पता है जहां पारंपरिक आरडीएमएस के समान अर्द्ध संरचित डेटा स्टोर के रूप में मोंगो का उपयोग किया जाता है। दूसरे मामले में यह तकनीक पूरी संरचना नहीं देगी लेकिन यह कम से कम कुछ त्वरित प्रदान कर सकती है। मैंने विविध टूल का उपयोग किया है और इसे व्यापक स्कीमा विश्लेषण के लिए बहुत पसंद किया है। – Paul

+0

सच है और वहां कहीं भी एक उपकरण है, इसका नाम भूल गया है, जो वास्तव में एक प्रदर्शन स्कीमा विश्लेषक बनाने के प्रयास में सीमित 10 प्रश्नों के 10 प्रश्न लेता है। – Sammaye

5

यह नाम और उसके प्रकार प्रिंट होगा

var schematodo = db.collection_name.findOne() 
for (var key in schematodo) { print (key, typeof key) ; } 
3

यह एक खुला स्रोत उपकरण है कि मैं, मेरे दोस्त के साथ मिलकर बनाया है है - https://pypi.python.org/pypi/mongoschema/

यह के साथ एक सुंदर सरल एक अजगर पुस्तकालय है उपयोग। आप इसे आजमा सकते हैं (यहां तक ​​कि योगदान)।

2

एक विकल्प Mongoeye का उपयोग करना है। यह विविधता के समान ओपन-सोर्स टूल है।

अंतर यह है कि मोंगोई एक अकेला कार्यक्रम है (मोंगो शैल की आवश्यकता नहीं है) और इसमें अधिक सुविधाएं हैं (हिस्टोग्राम, अधिकतर लगातार मूल्य, आदि)।

https://github.com/mongoeye/mongoeye

1

कुछ दिन पहले मैं कुछ अच्छा विज़ुअलाइज़ेशन के साथ जीयूआई ग्राहक MongoDB Compass पाया। product overview देखें। यह MongoDB लोगों से सीधे आता है और उनके दस्तावेज़ के अनुसार:

MongoDB कम्पास उपयोगकर्ताओं को आसानी से विश्लेषण और MongoDB के भीतर अपने डेटा संग्रह की सामग्री को समझने के लिए अनुमति देने के लिए डिज़ाइन किया गया है ...