CLI tool to manage mongo database collection indexes through json files
CLI utility to manage mongodb collection indexes
indexer --config <index-config-file>
--uri <mongodb-connection-uri>
--database <database name>
--apply
Details of options is listed below
Option | Required? | Description |
---|---|---|
config |
Yes | Path to indexes configuration file |
uri |
Yes | MongoDB connection string e.g. mongodb://127.0.0.1:27017
|
database |
Yes | Database name |
apply |
No | Whether to apply the indexes on collections or not. If not given, it will show the plan that will be applied |
The configuration file is just a simple json file containing the indexes to be applied. This file is an array of objects. Where each object has details like collection name, cap size and indexes for this specific collection.
[
{
"collection": "order", // name of collection
"cap": null, // Number of bytes
"index": [ // Array of index details
{"cartId": 1}, // An ascending order index
{"status": -1}, // Descending order index
{"orderId": 1},
{"groupId": 1},
{"currency": 1},
{"createdAt": -1},
{"orderNumber": 1, "type": 1}, // Composite index on orderNumber and type
{"type": -1, "paymentStatus": -1, "payment.paymentMethod": -1}
]
},
{
"collection": "collection_name",
"cap": null,
"index": [
{"userId": -1},
{"username": 1},
{"orderId": 1, "_unique": 1}, // creates a `unique index`
{"createdAt": -1, "_expireAfterSeconds": 500} // creates a `expires index` that will delete document after given number of seconds
]
}
....
....
....
]
Note cap
ping is still progress not yet supported
See list of index changes before applying
indexer --config "/path/to/xyz.json" --uri "mongodb://127.0.0.1:27017/database_name" --database "database_name"
Apply the index changes
$ indexer --config "/path/to/xyz.json" --uri "mongodb://127.0.0.1:27017/database_name" --database "database_name" --apply
_unique
and _expireAfterSeconds
indexesAnyone is welcome to contribute, however, if you decide to get involved, please take a moment to review the guidelines:
MIT © Adnan Ahmed