Bash 脚本无法按预期导入 mongodb

Bash 脚本无法按预期导入 mongodb
host=localhost
port=27017
db=cms

for c in `mongo --quiet $host:$port/$db --eval 'db.getCollectionNames()' | sed 's/,/ /g'`
do
    mongoexport --host $host --port $port -d $db -c $c > $c.json
done

这给了我很多空文件,文件名如下:“users.json”而不是 users.json,所以',我不知道它们来自哪里。另一件事是我有一个名为“[”.json 的文件和另一个名为“]”.json 的文件。

mongoexport --uri="mongodb://localhost:27017/" --db records --collection users --out dump.json

上述工作正常,所以我想知道这里是否是主机参数使用不正确的问题。

答案1

预期的输出mongo --quiet $host:$port/$db --eval 'db.getCollectionNames()'如下:

[ 'test2', 'log', 'log2' ]

因此你可以使用如下命令:

mongosh --quiet $host:$port/$db --eval 'db.getCollectionNames()'|awk -F"[' ,]" 'BEGIN {OFS=" "} { for(i=2;i<NF;i++) if ($i!="") printf "%s\n", $i}'

你会得到这样的结果:

test2
log
log2

这样就可以导出收藏品了。

相关内容