1.0.1 • Published 8 years ago

mongoose-aggregate-paginate-allowdiskuse v1.0.1

Weekly downloads
26
License
MIT
Repository
github
Last release
8 years ago

mongoose-aggregate-paginate-allowdiskuse

mongoose-aggregate-paginate-allowdiskuse is a Mongoose plugin easy to add pegination for aggregates. It includes the option allowDiskUse for bigger queries. This plugin is to be used in combination with view pagination middleware such as express-paginate.

Build Status npm version Dependency Status Test Coverage js-standard-style

NPM

Index

Install

npm install mongoose-aggregate-paginate-allowdiskuse --save

Usage

This plugin must first be added to a schema:

var mongooseAggregatePaginate = require('mongoose-aggregate-paginate-allowdiskuse');

mySchema.plugin(mongooseAggregatePaginate);

MyModel will have a new function called paginate (e.g. MyModel.aggregatePaginate()).

MyModel.aggregatePaginate(aggregate, options, callback)

Arguments

  • aggregate - An object of the Mongoose aggregate.
  • options - An object with options for the Mongoose query, such as sorting
    • page - Default: 1
    • limit - Default: 10
    • sortBy - Default: undefined
    • allowDiskUse - Default: false
  • callback(err, results, pageCount, itemCount) - A callback is called once pagination results are retrieved, or an error has occurred.

Examples

var MyModel = mongoose.model('MyModel',{
  name : String,
  age: Number,
  city, String
})

// find users above 18 by city
var aggregate = MyModel.aggregate();
aggregate.match({age : {'lt' : 18 } })
.group({ _id: '$city' , count : { '$sum' : 1 } })
var options = { page : 1, limit : 15, allowDiskUse: true }

MyModel.aggregatePaginate(aggregate, options, function(err, results, pageCount, count) {
  if(err) 
  {
    console.err(err)
  }
  else
  { 
    console.log(results)
  }
})

Tests

npm test

Acknowlegements

mongoose-aggregate-paginate-allowdiskuse is based on mongoose-aggregate-paginate.

License

MIT