mongo-csv
v2.2.5
Published
Query your Mongo DB collection and write the results to a CSV file
Readme
mongo-csv
CLI tool that runs your query against MongoDB and outputs the results to CSV.
Supports both find and aggregate queries.
Usage
Provide a config.json file in the directory you'll run mongo-csv, with the following format:
{
"url": "mongodb://my-mongo-server-url",
"databaseName": "my_db",
"collection": "my_collection",
"query": { "color": "purple" }
}Then you can either run mongo-csv with npx:
MONGO_USER=my_user MONGO_PASSWORD=secret npx mongo-csvOr you can install mongo-csv globally:
npm install -g mongo-csv
MONGO_USER=my_user MONGO_PASSWORD=secret mongo-csvConfig
Option|Description|Default value
---|---|---
databaseName|Name of the database with your data|required
collection|Name of the collection with your data|required
url|URL of the Mongo server to which you're connecting|mongodb://localhost:27017
method|Method you want to call on the collection - find or aggregate|find
query|The query you'd like to run to filter the data returned|{} (all records)
options|Lets you specify any of the Mongo driver's find or aggregate options. This is especially useful when running a find for specifying a projection to limit the number of columns returned, or a limit, to limit the number of rows.|{}
outputFilePath|Path to the file to which you want the results written|./query_results.csv
authDb|Specify the database against which to authenticate|Defaults to the value supplied for databaseName
Performance tips
mongo-csv will read documents using a cursor to avoid reading them all at once, but here are some additional performance considerations:
- Write as specific a
queryas you can so you only get the data you really need - Use the
projectionoption to specify only the fields you really need, so Mongo doesn't need to work to get you the rest - It's usually a good idea to have a database index in place to support your query, so it can run quickly
- Avoid reading huge amounts of data at your peak usage periods
- If your Mongo environment is a replica set, it's a good idea to point at one of your secondary servers to leave the primary server free to take care of new data being written
FAQ
- Does
mongo-csvsupportdistinct? Not directly, but you can achieve the same result using an aggregation.
Licence
MIT
