There are clone and copydb commands available in mongo shell, how to reach them in mongo node native driver(mongodb)?
That's what I have tried:
I discovered the db.command
available in node native mongodb driver. Reading documentation I tried this piece of code (db
is the destination db named 'newdb')
db = db.db('newdb');
db.addUser('newdbuser', 'newdbpass', {}, function (err) {
err && console.log(err);
console.log(authUrlForDb(config.MONGO_HOSTS));
db.command({
copydb: 1,
fromhost: config.MONGO_HOSTS,
fromdb: config.MOTHER_DB, // some database name
todb: 'newdb',
username: config.ADMIN_USERNAME, //
key: {
username: config.ADMIN_USERNAME,
password: config.ADMIN_PASSWORD
}
}, function (err, res) {
console.log(config.MONGO_HOSTS);
console.log(err, res);
db.close();
});
});
Which fails and logs this:
hostname1.host.io,hostname2.host.io
null { ok: 0, errmsg: 'access denied; use admin db' }
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…