MongoDB mongoexport 命令的使用及简单实现
文章目录
MongoDB 提供了 mongoexport 命令来导出数据,导出的数据是 json 格式的,当然也可以是 csv 格式。主要可以实现备份和恢复的功能。
具体的使用,我们使用 –help 查看,主要的参数有:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
-h [ --host ] arg 要连接的服务器,例如 127.0.0.1 或者 localhost --port arg 要连接服务器的端口,也可以使用 --host hostname:port -u [ --username ] arg 用户名 -p [ --password ] arg 密码 -d [ --db ] arg 使用的数据库(database)名称 -c [ --collection ] arg 使用的集合(collection) -o [ --out ] arg 导出的文件名 -f [ --fields ] arg 字段名称,使用逗号分隔,例如 -f name,age -q [ --query ] arg 查询过滤器 --csv 导出为 csv 格式 |
例如,我们要导出 tests 数据库中的 users 集合,可以使用:
1
|
mongoexport -d tests -c users -o users.dat |
现在,针对这几个简单的参数,我们自己使用 nodejs 来进行对 mongoexport 简单的实现,大概思路如下:
- 1. 使用 nodejs 的 mongodb 库 node-mongodb-native 来连接 MongoDB。
安装 mongodb:
1
|
npm install mongodb |
连接 MongoDB 的主要代码:
1 2 3 4 5 |
var mongoClient = new MongoClient(new Server('localhost', 27017)); mongoClient.open(function(err, mongoclient) { }); |
- 使用 process.argv 来接收输入的参数
- 使用 fs.writeFile 来输出 json 数据文件
具体实现如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
var fs = require('fs'), MongoClient = require('mongodb').MongoClient, Server = require('mongodb').Server, options = null; mongoClient = null; if (process.argv.length <= 2 || process.argv.indexOf('--help') !== -1) { showHelp(); return; } options = getOptions(); exportFile(); function showHelp() { console.error([ 'Export MongoDB data to JSON files.', '', 'options:', ' --help produce help message', ' -h [ --host ] arg mongo host to connect to', ' --port arg server port', ' -u [ --username ] arg username', ' -p [ --password ] arg password', ' -d [ --db ] arg database to use', ' -c [ --collection ] arg collection to use (some commands)', ' -o [ --out ] arg output file' ].join('\n')); } function getOptions() { var args = process.argv, options = { host: '127.0.0.1', port: 27017 }, keys = { '-h': 'host', '--host': 'host', '--port': 'port', '-u': 'username', '--username': 'username', '-p': 'password', '--password': 'password', '-d': 'db', '--db': 'db', '-c': 'collection', '--collection': 'collection', '-o': 'output', '--out': 'output' }; for (var i = 2; i < args.length; i += 2) { if (keys.hasOwnProperty(args[i])) { options[keys[args[i]]] = args[i + 1]; } } return options; } function exportFile() { mongoClient = new MongoClient(new Server(options.host, options.port, {native_parse: true})); mongoClient.open(function(err, mongoclient) { var db = mongoclient.db(options.db); db.collection(options.collection).find().toArray(function(err, results) { if (err) { console.log(err); return; } fs.writeFile(options.output, JSON.stringify(results), function(err) { if (err) { console.log(err); return; } console.log([ 'connected to: ' + options.host, 'exported ' + results.length + ' records' ].join('\n')); mongoClient.close(); }); }); }); } |
如何使用:
1
|
node mongoexport.js -d tests -c users -o users.dat |
文章作者 wenzhixin
上次更新 2013-06-12