0

我正在开发一个小工具,它解析一些文件,提取特定信息,然后将其存储到 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
4

2 回答 2

2

以下假设您可以将多个命令写入您的 mongo 工具。

作为标准输出打开 mongo 命令的管道。之后,您可以编写命令。

exec > >(mongo ...)
find ... | while read ... ; do
  echo "db.test.insert(...);"
done
于 2013-11-03T18:26:25.657 回答
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
于 2013-11-03T17:40:56.853 回答