https://github.com/hash-bang/monoxide-auto-indexer
Plugin for Monoxide to automatically manage MongoDB indexes
https://github.com/hash-bang/monoxide-auto-indexer
Last synced: 3 months ago
JSON representation
Plugin for Monoxide to automatically manage MongoDB indexes
- Host: GitHub
- URL: https://github.com/hash-bang/monoxide-auto-indexer
- Owner: hash-bang
- License: mit
- Created: 2018-07-27T13:46:01.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2018-08-17T07:08:07.000Z (almost 7 years ago)
- Last Synced: 2025-03-09T20:33:55.972Z (3 months ago)
- Language: JavaScript
- Size: 35.2 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Monoxide-Auto-Indexer
=====================
Plugin for [Monoxide](https://github.com/hash-bang/Monoxide) to automatically manage MongoDB indexes.```javascript
var monoxide = require('monoxide');
var monoxideAutoIndexer = require('monoxide-auto-indexer');monoxide
.connect('mongodb://localhost/monoxide-test')
.use(monoxideAutoIndexer())
.models.users.hook('autoIndexer.build', (hookDone, index) => {
console.log('Created index', index);
hookDone();
});
```See the [testkit](test/) for more complex examples.
API
===AutoIndxer (main module)
------------------------
The module exports a function factory which can take the following settings:| Setting | Type | Default | Description |
|---------------------|----------|------------------------|---------------------------------------------------------------------------------------------------|
| `dryRun` | Boolean | `false` | Don't actually create the indexes in Mongo, just act as though we did |
| `modelFilter` | Function | (accepts all models) | Function to filter collections / models - by default all are used |
| `indexThrottle` | Number | `1000*60` (60 seconds) | How often in milliseconds to throttle index queries |
| `indexResetOnBuild` | Boolean | `true` | Whether to reset the index cache when building a new index |
| `indexCreateErrors` | Boolean | `false` | Pass on index creation errors to the initial query handler, if false creation errors are ignored |
| `sortIndexes` | Boolean | `false` | Sort the created indexes alphabetically, this is easier to read but has a slight performance hit |Emits `autoIndexer.query` (as `(indexes)`) when querying an index and `autoIndexer.build` (as `(index, mongoSpec)`) when building a new index.
AutoIndexer.clean()
-------------------
Utility function to remove unused indexes.
Ideally this function should be called at an hour the system is not under load.This function can take the following settings:
| Setting | Type | Default | Description |
|-----------------------|------------|-----------------------------|----------------------------------------------------------------------------------------------------|
| `modelFilter` | Function | (accepts all models) | Function to filter collections / models - by default all are used |
| `indexFilter` | Function | (rejects only `_id` fields) | Function to filter index selection from cleaning |
| `dryRun` | Boolean | `false` | Don't actually remove indexes, just report on what would be removed |
| `hitMin` | Number | `100` | The minimum number of hits for an index to be retained |Emits `autoIndexer.clean` with the single argument being the index that will be removed.
DEBUGGING
=========
Enable the `DEBUG=monoxide-auto-indexer` flag to see verbose information about keys being cleaned.