@debitoor/mongocopy

1.2.0 • Public • Published

mongocopy npm version Build Status dependencies Status

Sometimes we need to copy a special set of user data from one environment to another. The module fits nicely when you want to

  • select a set of collections
  • add match criteria to the documents inside
  • specify transform function for documents
  • and get it on other db

example

Assume you have production and staging database. In production db you have

{
	products: [
		{userId: 1, _id: 1, name: 'apple'},
		{userId: 1, _id: 2, name: 'orange'}
	],
	customers: [
		{userId: 1, _id: 1, name: 'bob'},
		{userId: 1, _id: 2, name: 'rob'},
		{userId: 2, _id: 3, name: 'li'}
	],
	countries: [
		{_id: 1, code: 'UA'},
		{_id: 2, code: 'ES'},
		{_id: 3, code: 'DK'}
	],
	files: [..],
	other: [..]
}

You want to copy only a few collections for the user 1, transform the documents inside because of env differences, and also you want some dictionary eg countries

var mongocopy = require('mongocopy');

var opts = {
		uriFrom: 'mongodb://localhost:27017/production',
		uriTo: 'mongodb://localhost:27017/staging',
		data: {
			products: {
				query: {userId: 1},
				transform: function(doc, cb) {
					doc.name += ' xxl';
					return cb(null, doc);
				}		
			},
			customers: {
				query: {userId: 1},
				transform: function(doc, cb) {
					doc.name = 'mr ' + doc.name;
					return cb(null, doc);
				}
			},
			countries: {}
		},
		dryRun: true, // fake run without inserts, reports docs which are found by given queries
		log: true, // streaming logs, false by default
		ignoreDuplicates: true // continue if duplicate error occured, false by default
	}
};

mongocopy(opts, function(err, report) {
	console.log(arguments);
});

That's it!

Readme

Keywords

Package Sidebar

Install

npm i @debitoor/mongocopy

Weekly Downloads

43

Version

1.2.0

License

MIT

Unpacked Size

5.26 kB

Total Files

3

Last publish

Collaborators

  • bgeraymovich
  • debitoor-bot
  • mamant
  • hilleer
  • zaaom
  • s0ph1e
  • oalpatov
  • maciej-kusnierz
  • sumup.vascofg
  • igor_torba
  • igor.g
  • ituraj
  • hamoudaarfaoui
  • soulmonk
  • moustafa-sumup
  • andriyonyshchenko
  • belrestro
  • connor_baer
  • balexandre
  • mickael-h
  • felixjung
  • oarostovtseva
  • ketansumup
  • zetxek
  • mmahrous
  • jonathanmh
  • talar.boyadjian
  • filipecorrea
  • andrei-at-sumup
  • andriimykhailovsumup
  • david-sumup
  • mtlarva
  • dzmitry.h.sumup
  • silchenko-sumup
  • shadowmaru