mongodb非交互式命令
创建连接执行命令
批量执行命令
./mongo 127.0.0.1:37017/mydb -uadmin -pTran --authenticationDatabase admin --eval "printjson(db.asset_scan.findOne());printjson(db.asset_scan.findOne());"
./mongo 127.0.0.1:37017/mydb -uadmin -pTran --authenticationDatabase admin --eval "db.currentOp()"
执行命令脚本文件
./mongo 127.0.0.1:37017 test.js
./mongo --nodb test.js 不用默认的连接就必须使用 --nodb选项参数
test.js var url = "mongodb://admin:Tran@127.0.0.1:37017/" var con = new Mongo(url) var db = con.getDB("mydb") printjson(db.stats())test.js
交互式创建分区表
设置分片
use admin
db.auth("admin","admin")
db.runCommand({enablesharding:"mydb"}) //必须先切换到admin数据库然后才能有权限创建分区表
对新表进行设置
db.runCommand({shardcollection:"mydb.asset_acceptance_info",key:{_id:'hashed'}})
对已经有数据的表设置
db.runCommand({shardcollection:"mydb.asset_acceptance_info",key:{"_id":1}})
非交互式创建分区表
var url = "mongodb://admin:Tran@127.0.0.1:37017/"
var con = new Mongo(url)
var db = con.getDB("mydb")
db.adminCommand({shardcollection:"mydb.test7",key:{"_id":1}})
printjson(db.test7.getShardDistribution())
创建分区和索引
var url = "mongodb://admin:Tran@192.168.0.103:37017/" var con = new Mongo(url) var db = con.getDB("mydb") //创建分区表名称为test8 db.adminCommand({shardcollection:"mydb.test8",key:{"_id":1}}) //创建分区表的索引字段 db.test8.ensureIndex({"_id":1}) db.test8.ensureIndex({"ipv4":1}) printjson(db.test8.getShardDistribution()) printjson(db.test8.stats())
分区表的重命名
#先备份原来的表 备份表的名称是-c 后面的字符串asset_scan_result 需要根据情况设置表名称 /data/tian/mongodb-linux-x86_64-amazon-3.6.2/bin/mongodump -h 192.168.0.103:37017 -uadmin -pTrans --authenticationDatabase admin -d mydb -c asset_scan_result -o /data/tian/backuptable/ #手动删除备份好的表,然后重新创建一个新的空表 #还原备份的数据到新表 /data/tian/mongodb-linux-x86_64-amazon-3.6.2/bin/mongorestore -h 192.168.0.103:37017 -uadmin -pTran --authenticationDatabase admin -d mydb -c asset_scan_result /data/tian/backuptable/asset_scan_result.bson
非交互式批量删除库
vi dropdatabase.js var url = "mongodb://assert:Trans@192.168.19.10:27017/" var conn = new Mongo(url) var dbs=["aaa","bbb","ccc","ddd","eee","fff","jjj","kkk"] for (var i = 0; i) { printjson(dbs[i]); db = conn.getDB(dbs[i]); printjson(db.stats()) db.dropDatabase(); };