选择一个数据库中的Collections集合,然后按住 Ctrl+C 复制快捷键会弹出如下帮助框。
点击 Ctrl+V 粘贴快捷键,重命名一下复制的名称即可。
在Collection中,右键选择复制Collection
然后重命名即可
collection_name是数据库表名 new_database是目的数据库
克隆本地collection,mongodb没有提供命令进行本地复制,但我们可以写一个循环插入的方法完成
在同一个主机上同一个db下复制一个表 db.复制源表名.find().forEach(function(x){ db.目的表名.insert(x); }) 例子: db.t_sentiment_ids.find().forEach(function(x){ db.t_sentiment_ids22.insert(x); })后面四个选项可选:
fromdbt: 源db;todb: 目标db;fromhost: 源db的主机地址,如果在同一个mongod实例内可以省略;username: 如果开启了验证模式,需要源DB主机上的MongoDB实例的用户名;password: 同上,需要对应用户的密码;mechanism: fromhost验证username和password的机制,有:MONGODB-CR、SCRAM-SHA-1两种。例
db.copyDatabase('test','test2','192.168.14.52:27017','test','test','SCRAM-SHA-1')不带密码认证的测试成功了,带密码认证的还未成功
fromhost: 可选,见4.1; slaveOK: 可选,设置为true,允许从secondary复制数据,此时fromehost必须被设置; username: 可选,见4.1; nonce: 远程服务器上产生的一次性共享密钥; key: 对password的hash值
例
db.runCommand({ cloneCollection:'testdb.testcol', from:'192.168.1.12:27017', copyIndexes:false, query:{'age':{'gt':2}} });copyIndexes:是否复制索引
刷新磁盘:将内存中尚未写入磁盘的信息写入磁盘,并锁住对数据库更新的操作,但读操作可以使用,使用runCommand命令,这个命令只能在admin库上执行 格式:db.runCommand({fsync:1,async:true}) async:是否异步执行 lock:1 锁定数据库
数据压缩:mongodb的存储结构采用了预分配的机制,长期不断的操作,会留下太多的的碎片,从而导致数据库系统越来越慢。 repairDatabase命令是mongodb内置的一个方法,它会扫描数据库中的所有数据,并将通过导入/导出来重新整理数据集合,将碎片清理干净 现在看压缩前和压缩后的对比数据,如下所示:
PRIMARY> db.t1.storageSize() 65232896 PRIMARY> db.t1.totalSize() 81470432 PRIMARY> db.repairDatabase() { “ok” : 1 } PRIMARY> db.t1.storageSize() 65232896 PRIMARY> db.t1.totalSize() 79851584参考:https://blog.csdn.net/kturing/article/details/73302014 https://blog.csdn.net/xingchen1106/article/details/45477409 http://www.ibloger.net/article/2614.html https://docs.mongodb.com/v3.2/reference/method/db.copyDatabase/
