2012-01-20 8 views
5
के माध्यम से सभी क्षेत्रों प्रदान करने के लिए पूछ रहा है

-f [--fields] arg अल्पविराम फ़ील्ड नामों की अलग सूची -f नाम, आयु

  • वहाँ एक रास्ता है, लेकिन bson स्वरूप में नहीं डंप का उपयोग कर की तरह पूरे संग्रह प्राप्त करने के लिए है?
  • मैं जरूरत सीएसवी डेटा

आप

धन्यवाद
+0

एमओएसओडीबी के पास सीएसवी डंप के लिए कोई निर्यात कमांड नहीं है? आजकल, 2015 भी? –

उत्तर

0

आप फ़ील्ड नाम के साथ एक फ़ाइल बना सकते हैं (आप के लिए आसान हो सकता है):

--fieldFile arg   file with fields names - 1 per line 

आपके मामले में वे सब हो सकता है वही है लेकिन आपको फ़ील्ड नाम निर्दिष्ट करने का कारण यह है कि वे प्रत्येक दस्तावेज़ के लिए अलग-अलग हो सकते हैं, हालांकि सीएसवी में फ़ील्ड नाम निश्चित किए जाने चाहिए।

10

बैश आप इस "export-all-collections-to-csv.sh" और केवल तर्क (एक संग्रह को यह कम करने के लिए स्वतंत्र लग रहा है) के रूप में डेटाबेस नाम पारित बना सकते हैं में:

OIFS=$IFS; 
IFS=","; 

dbname=$1 #put "database name" here if you don't want to pass it as an argument 

collections=`mongo $dbname --eval "rs.slaveOk();db.getCollectionNames();" --quiet`; 
collectionArray=($collections); 

for ((i=0; i<${#collectionArray[@]}; ++i)); 
do 
    keys=`mongo $dbname --eval "rs.slaveOk();var keys = []; for(var key in db.${collectionArray[$i]}.findOne()) { keys.push(key); }; keys;" --quiet`; 
    mongoexport --db $dbname --collection ${collectionArray[$i]} --fields "$keys" --csv --out $dbname.${collectionArray[$i]}.csv; 
done 

IFS=$OIFS; 
संबंधित मुद्दे