Milestone adapters
The milestone adapter is responsible for storing periodic snapshots of documents, primarily in order to speed up document history.
Available adapters
ShareDBMilestoneMongo
sharedb-milestone-mongo runs on MongoDB.
Usage
An instance of a milestone adapter should be provided to the Backend() constructor’s milestoneDb option:
const backend = new Backend({
  milestoneDb: new ShareDBMilestoneMongo(),
})
Requesting snapshots
Adapters will define default snapshot behaviour. However, this logic can be overridden using the saveMilestoneSnapshot option in middleware.
Setting context.saveMilestoneSnapshot to true will request a snapshot be saved, and setting it to false means a snapshot will not be saved.
If context.saveMilestoneSnapshot is left to its default value of null, it will assume the default behaviour defined by the adapter.
shareDb.use('commit', (context, next) => {
  switch (context.collection) {
    case 'foo':
      // Save every 100 versions for collection 'foo'
      context.saveMilestoneSnapshot = context.snapshot.v % 100 === 0;
      break;
    case 'bar':
    case 'baz':
      // Save every 500 versions for collections 'bar' and 'baz'
      context.saveMilestoneSnapshot = context.snapshot.v % 500 === 0;
      break;
    default:
      // Don't save any milestones for collections not named here.
      context.saveMilestoneSnapshot = false;
  }
  next();
});