1.0.0 • Published 4 years ago

process-collection v1.0.0

Weekly downloads
5
License
-
Repository
-
Last release
4 years ago

Process Collection

Run a function on documents in collections asyncronously and with progress indicator.

Setup

Install dependencies:

npm install

To run the test example:

make

This assumes you have mongo running on localhost port 3001, with a database called meteor that contains a clients collection.

The makefile directs standard output to output.log while displaying process to stderr.

processCollection

This function has a single argument with properties:

  • collection: mongo collection
  • query: a mongo query on the collection
  • projection: projection to limit the fields (might be broken, but would be helpful for large documents over the network)
  • sort: sort
  • limit: limit
  • showProgress: boolean, default true: output progress with eta to stderr
  • handler: handler function that takes a single document

example:

const connect = require('./lib/connection')
const processCollection = require('./lib/process-collection')

connect('mongodb://localhost:3001/meteor').then(async client => {
  const Clients = client.db().collection('clients')

  await processCollection({
    collection: Clients,
    query: { created_at: { $gte: new Date("2016-01-01" ) } },
    handler: function(doc) {
      console.log(doc._id);
    }
  })

  client.close()
})

The above will output the _id of each document in the clients collection from the meteor database on localhost:3001.