今天接到一個任務,需要把兩萬的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 文件名
./文件名