您的位置:首页 > 数据库

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

2016-08-11 15:02 435 查看
今天接到一个任务,需要把两万的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 文件名

./文件名
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: