Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@debitoor/mongocopy

Package Overview
Dependencies
Maintainers
28
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@debitoor/mongocopy

module for copying the subsets of data between mongo databases

  • 1.2.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
30
decreased by-42.31%
Maintainers
28
Weekly downloads
 
Created
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

Package last updated on 22 Jan 2020

Did you know?

Socket

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
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc