这里我试图将一些值推送到 mongodb 这是我的伪代码
while read LINE
do
addRow $para1 $param1 #pass value to the mongo
done < ${FILE}
function addRow() {
para1="$1";
para2="$2";
if [ ! -z "$para1" ]
then
echo $1 $2;
mongo dbname <<EOF
newstuff = [{ "name" : "${1}", "age" : "${2}" }]
db.collectionname.insert(newstuff);
EOF
else
echo “Failed”;
fi
}
它工作正常,但我认为这不是完成这项工作的正确方法,我可以看到每次都重新建立连接,任何专业建议可能会有帮助
#### Process
bye
#file1
connecting to: dbname
[
##proc 1
]
bye
#file 2
MongoDB shell version: 2.4.8
connecting to: dbname
[
##proc 2
]
bye
#file3
MongoDB shell version: 2.4.8
connecting to: dbname
[
##proc 3
]
bye
最佳答案
假设 FILE 中的每个 LINE 包含两个参数,我将首先为所有内容构建 JS 对象,然后通过一次调用将其添加到 mongo:
items=()
while read para1 para2; do
items+=( "$(printf '{"name":"%s","age":"%s"}' "$para1" "$para2")" )
done < "$FILE"
js_list=$(IFS=,; echo "[${items[*]}]")
mongo dbname <<EOF
newstuff = $js_list
db.collectionname.insert(newstuff);
EOF
关于linux - 使用 Linux shell 脚本向 mongodb 添加值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20078236/