मुझे पता है कि यह काफी पुराना सवाल है और यह कि मोंगोडम्प / मोंगोरस्टोर स्पष्ट रूप से सही तरीका है यदि आप 100% वफादार परिणाम चाहते हैं, जिसमें इंडेक्स भी शामिल है।
हालांकि, मुझे एक त्वरित और गंदे समाधान की आवश्यकता थी जो संभवतः मोंगबीडीबी के पुराने और नए संस्करणों के बीच आगे और पीछे संगत होगी, बशर्ते कि कुछ भी विशेष रूप से निराला न हो। और इसके लिए मुझे मूल प्रश्न का उत्तर चाहिए था।
ऊपर अन्य स्वीकार्य समाधान हैं, लेकिन यह यूनिक्स पाइपलाइन अपेक्षाकृत छोटी और प्यारी है:
mongo --quiet mydatabase --eval "db.getCollectionNames().join('\n')" | \
grep -v system.indexes | \
xargs -L 1 -I {} mongoexport -d mydatabase -c {} --out {}.json
यह .json
प्रत्येक संग्रह के लिए उचित रूप से नामित फ़ाइल का उत्पादन करता है ।
ध्यान दें कि डेटाबेस का नाम ("mydatabase") दो बार दिखाई देता है। मैं मान रहा हूं कि डेटाबेस स्थानीय है और आपको क्रेडेंशियल पास करने की आवश्यकता नहीं है, लेकिन ऐसा करना आसान है mongo
और दोनों के साथmongoexport
।
ध्यान दें कि मैं grep -v
त्यागने के लिए उपयोग कर रहा हूं system.indexes
, क्योंकि मैं नहीं चाहता कि मोंगोडीबी का एक पुराना संस्करण नए संग्रह से सिस्टम संग्रह की व्याख्या करने का प्रयास करे। इसके बजाय मैं अपने एप्लिकेशन को ensureIndex
अनुक्रमणिका को फिर से बनाने के लिए अपने सामान्य कॉल करने की अनुमति दे रहा हूं ।