Socket
Socket
Sign inDemoInstall

@debitoor/mongocopy

Package Overview
Dependencies
11
Maintainers
28
Versions
4
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @debitoor/mongocopy

module for copying the subsets of data between mongo databases


Version published
Weekly downloads
11
decreased by-47.62%
Maintainers
28
Created
Weekly downloads
 

Readme

Source

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!

Keywords

FAQs

Last updated on 22 Jan 2020

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc