linux - 使用 Linux shell 脚本向 mongodb 添加值

标签 linux node.js bash mongodb loops

这里我试图将一些值推送到 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/

相关文章:

javascript - 类型错误 : url is not a function

node.js - 为什么远程服务器响应在获取请求后不包含 nodejs 上的 x-csrf-token?

windows - 更改 git bash 的根目录(/)

linux - getopts命令没有输入时如何回显

mysql - 如何增加etc/my.cnf中的Mysql连接限制

linux - 浏览器外的月光4

c++ - 在 Linux 上断言失败后继续调试?

node.js - Mongoose - 从架构内访问填充字段

linux - 如何获取linux awk的文件名并查找结果

linux - shell如何为awk生成输入