我正在开发一个小工具,它解析一些文件,提取特定信息,然后将它存储到mongodb集合中。
它现在正在运作,但它正在做类似的事情:
#!/bin/bash
find myFolder | while read f
do
# some things
...
# and then
echo "db.test.insert({'val': BinData(0, '$data')});" | mongo -quiet --host 127.0.0.1:36427 collectionName
done
但这里的“问题”是我每次都打开/关闭mongodb连接 所以这是一个问题:
有没有办法启动mongodb连接,然后在其中发生一些数据。
我知道下面的代码是完全错误的,但它只是给你一个我正在寻找的功能的例子:
#!/bin/bash
mongoConn=`mongo 127.0.0.1:36427 collectionName`
find myFolder | while read f
# ...
echo "db.test.insert(..);" > mongoConn
done
echo "exit;" > mongoConn
答案 0 :(得分:2)
以下假设您可以向mongo工具写入多个命令。
以stdout打开mongo命令的管道。之后,您可以编写命令。
exec > >(mongo ...)
find ... | while read ... ; do
echo "db.test.insert(...);"
done
答案 1 :(得分:0)
您可以尝试以下方式:
#!/bin/bash
deleteTmpFile(){
[[ -f insert.tmp ]] && rm -rf $1
}
tmpFile="insert.tmp"
deleteTmpFile $tmpFile
find ... | while read f
do
#...
echo "db.test.insert({'val': BinData(0, '$data')});" >> $tmpFile
done
cat insert.tmp|mongo -quiet --host 127.0.0.1:36427 collectionName
deleteTmpFile $tmpFile