编写bash脚本来更新mongo数据库数据

今天接到一个任务,需要把两万的member的某个字段改为true, 然后就开始了,


接收到的文件是一个一列超长的member id文件,然后在shell使用

split -l 1200 member.txt member_

将member.txt按照1200的条数分割成多个文件,主要是因为是数据量太大,所以切成多个文件,切成的文件类似member_aa  member_ab  member_ac之类的

然后编写bash脚本

#!/bin/bash
#Disable some member by memberId
function readFile()
{
    k=0
    array=()
    while read myline
    do
        line="ObjectId('${myline}'),"
        array[$k]=$line
        let k=($k+1)
    done < $1
    array[$k]="ObjectId('${myline}')"

    set='$set'
    in='$in'
    memberIds=${array[@]}
    mongo 数据库名 --eval "db.member.update({'_id':{'$in':[$memberIds]}}, {'$set':{'isDisabled':true}}, {multi:true})"
    return 1
}

filename='./member_a'
path=('y' 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 'u' 'v' 'w' 'x')
num=0

for pathName in ${path[@]}
do
    filePath="${filename}${pathName}"
    readFile "$filePath"
    let num=($num+$?)
    echo "have been finished $expr $num / 25, this file name is $filePath"
done
    echo "successful !"


----------------------------------------------------割割割--------------

然后使用命令:

bash 文件名

或者

chmod +x 文件名

./文件名




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值