mongodb索引导入

在实际项目开发中,很多时候需要做数据迁移,针对于mongo的迁移,除了数据以外,还需要额外的迁移db的索引。

本期我们主要提供索引的导入,具体代码如下:

var db_name='dbname'
conn = new Mongo();
db = db.getSiblingDB(db_name);


joinStr = "*_*";

// 添加所有表的索引
// 前提是通过findAllIndexes函数将所有表的索引写入了当前执行路径下的all_indexes.txt文件
function addAllIndexes() {
    // 获取所有索引,一行代表一张表的索引
    let indexes = cat('./demo.txt');
    lines = indexes.split('\n');
    // 遍历所有表的索引

    for (var line of lines) {
        let items = line.split(joinStr);
        if (items.length !== 2) {
            continue
        }

        let colName = items[0].trim();
        let indexes = items[1].trim();

        if (indexes === "") {
            continue
        }

        for (var index of JSON.parse(indexes)) {
            print("begin add collectionName:", colName, "index:", JSON.stringify(index));
            // 一次只创建一个索引,防止批量创建索引过程中的错误可能导致多个索引创建失败

            if (index.name == "_id_") {
                continue;
            }

            let rs = db.runCommand(
                {
                    createIndexes: colName,
                    indexes: [index]
                }
            );
            print("operation result:", JSON.stringify(rs),"\n");
        }
        print("\n");
    }
}

addAllIndexes();

从上可以看出来,索引的导入需要执行命令:

mongodb的安装路径/bin/mongo mongodb_IP:mongodb_PORT/mongodb_NAME -u user -p pwd ./mongo_import.js > out.txt.

其中mongo_import.js指的是上面代码的js脚本。

mongodb_IP 指的是mongo的ip地址

mongodb_PORT 指的是连接mongo的port

mongodb_NAME 指的是mongo的dbname

user 指的是登录mongo的账号

pwd 指的是登录mongo的密码

out.txt 是把执行结果输入到out.txt中。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

it程序员-郭泽

多少都是心意,谢谢大家

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值