Skip to content

Instantly share code, notes, and snippets.

@ricjcosme
Forked from mderazon/mongo-dump-csv.sh
Created January 16, 2021 22:56
Show Gist options
  • Select an option

  • Save ricjcosme/53e626471e274c188a81fc6e41656c58 to your computer and use it in GitHub Desktop.

Select an option

Save ricjcosme/53e626471e274c188a81fc6e41656c58 to your computer and use it in GitHub Desktop.

Revisions

  1. @mderazon mderazon revised this gist Dec 31, 2013. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion mongo-dump-csv.sh
    Original file line number Diff line number Diff line change
    @@ -17,7 +17,7 @@ for ((i=0; i<${#collectionArray[@]}; ++i));
    do
    echo 'exporting collection' ${collectionArray[$i]}
    # get comma separated list of keys. do this by peeking into the first document in the collection and get his set of keys
    keys=`mongo "$host/$dbname" -u $user -p $pass --eval "rs.slaveOk();var keys = []; for(var key in db.${collectionArray[$i]}.find().sort({_id, -1}).limit(1)[0]) { keys.push(key); }; keys;" --quiet`;
    keys=`mongo "$host/$dbname" -u $user -p $pass --eval "rs.slaveOk();var keys = []; for(var key in db.${collectionArray[$i]}.find().sort({_id: -1}).limit(1)[0]) { keys.push(key); }; keys;" --quiet`;
    # now use mongoexport with the set of keys to export the collection to csv
    mongoexport --host $host -u $user -p $pass -d $dbname -c ${collectionArray[$i]} --fields "$keys" --csv --out $dbname.${collectionArray[$i]}.csv;
    done
  2. @mderazon mderazon revised this gist Dec 31, 2013. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion mongo-dump-csv.sh
    Original file line number Diff line number Diff line change
    @@ -17,7 +17,7 @@ for ((i=0; i<${#collectionArray[@]}; ++i));
    do
    echo 'exporting collection' ${collectionArray[$i]}
    # get comma separated list of keys. do this by peeking into the first document in the collection and get his set of keys
    keys=`mongo "$host/$dbname" -u $user -p $pass --eval "rs.slaveOk();var keys = []; var keys = [];for(var key in db.orders.find().sort({_id:-1}).limit(1)[0]) { keys.push(key); }; keys" --quiet`;
    keys=`mongo "$host/$dbname" -u $user -p $pass --eval "rs.slaveOk();var keys = []; for(var key in db.${collectionArray[$i]}.find().sort({_id, -1}).limit(1)[0]) { keys.push(key); }; keys;" --quiet`;
    # now use mongoexport with the set of keys to export the collection to csv
    mongoexport --host $host -u $user -p $pass -d $dbname -c ${collectionArray[$i]} --fields "$keys" --csv --out $dbname.${collectionArray[$i]}.csv;
    done
  3. @mderazon mderazon revised this gist Dec 31, 2013. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion mongo-dump-csv.sh
    Original file line number Diff line number Diff line change
    @@ -17,7 +17,7 @@ for ((i=0; i<${#collectionArray[@]}; ++i));
    do
    echo 'exporting collection' ${collectionArray[$i]}
    # get comma separated list of keys. do this by peeking into the first document in the collection and get his set of keys
    keys=`mongo "$host/$dbname" -u $user -p $pass --eval "rs.slaveOk();var keys = []; for(var key in db.${collectionArray[$i]}.findOne()) { keys.push(key); }; keys;" --quiet`;
    keys=`mongo "$host/$dbname" -u $user -p $pass --eval "rs.slaveOk();var keys = []; var keys = [];for(var key in db.orders.find().sort({_id:-1}).limit(1)[0]) { keys.push(key); }; keys" --quiet`;
    # now use mongoexport with the set of keys to export the collection to csv
    mongoexport --host $host -u $user -p $pass -d $dbname -c ${collectionArray[$i]} --fields "$keys" --csv --out $dbname.${collectionArray[$i]}.csv;
    done
  4. @mderazon mderazon revised this gist Dec 31, 2013. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion mongo-dump-csv.sh
    Original file line number Diff line number Diff line change
    @@ -7,7 +7,7 @@ user=USERNAME
    pass=PASSWORD
    host=HOSTNAME:PORT

    # first get an array of all collections in the database
    # first get all collections in the database
    collections=`mongo "$host/$dbname" -u $user -p $pass --eval "rs.slaveOk();db.getCollectionNames();"`;
    collections=`mongo $dbname --eval "rs.slaveOk();db.getCollectionNames();"`;
    collectionArray=($collections);
  5. @mderazon mderazon revised this gist Dec 31, 2013. 1 changed file with 5 additions and 2 deletions.
    7 changes: 5 additions & 2 deletions mongo-dump-csv.sh
    Original file line number Diff line number Diff line change
    @@ -7,15 +7,18 @@ user=USERNAME
    pass=PASSWORD
    host=HOSTNAME:PORT

    # first get an array of all collections in the database
    collections=`mongo "$host/$dbname" -u $user -p $pass --eval "rs.slaveOk();db.getCollectionNames();"`;
    collections=`mongo $dbname --eval "rs.slaveOk();db.getCollectionNames();"`;
    collectionArray=($collections);


    # for each collection
    for ((i=0; i<${#collectionArray[@]}; ++i));
    do
    echo 'working on collection' ${collectionArray[$i]}
    echo 'exporting collection' ${collectionArray[$i]}
    # get comma separated list of keys. do this by peeking into the first document in the collection and get his set of keys
    keys=`mongo "$host/$dbname" -u $user -p $pass --eval "rs.slaveOk();var keys = []; for(var key in db.${collectionArray[$i]}.findOne()) { keys.push(key); }; keys;" --quiet`;
    # now use mongoexport with the set of keys to export the collection to csv
    mongoexport --host $host -u $user -p $pass -d $dbname -c ${collectionArray[$i]} --fields "$keys" --csv --out $dbname.${collectionArray[$i]}.csv;
    done

  6. @mderazon mderazon created this gist Dec 31, 2013.
    22 changes: 22 additions & 0 deletions mongo-dump-csv.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,22 @@
    OIFS=$IFS;
    IFS=",";

    # fill in your details here
    dbname=DBNAME
    user=USERNAME
    pass=PASSWORD
    host=HOSTNAME:PORT

    collections=`mongo "$host/$dbname" -u $user -p $pass --eval "rs.slaveOk();db.getCollectionNames();"`;
    collections=`mongo $dbname --eval "rs.slaveOk();db.getCollectionNames();"`;
    collectionArray=($collections);


    for ((i=0; i<${#collectionArray[@]}; ++i));
    do
    echo 'working on collection' ${collectionArray[$i]}
    keys=`mongo "$host/$dbname" -u $user -p $pass --eval "rs.slaveOk();var keys = []; for(var key in db.${collectionArray[$i]}.findOne()) { keys.push(key); }; keys;" --quiet`;
    mongoexport --host $host -u $user -p $pass -d $dbname -c ${collectionArray[$i]} --fields "$keys" --csv --out $dbname.${collectionArray[$i]}.csv;
    done

    IFS=$OIFS;