从bash脚本运行mongo命令

伊佐丁·莫哈德·伊萨

我正在尝试从bash脚本运行以下命令

db['STUDENT_DOCUMENTS.chunks'].find({
    _id: {
        $in: [
            ObjectId("57ce3bc6e4b0ee0234924cb4"),
            ObjectId("57a40750e4b03808d591b5cb"),
            ObjectId("57b17588e4b03808d594ceec"),
            ObjectId("57b2e03ee4b03808d595246f"),
            ObjectId("57c786bde4b03808d598eb41")
        ]
    }
})

ObjectId单独文件中的总数超过100的地方,我需要使用用户名和密码登录mongodb并将结果输出到文件中,该如何在bash shell脚本中完成?

我在想像这样的事情

for i in 'cat ObjectId.txt" ; do \
mongo 127.0.0.1:10000/admin --username=user --password=pass \
--eval "db['Student_DOCUMENTS.chunks'].find({_id :{$in: [ObjectId("$i")
]}})

运行此脚本时,将输出重定向到文件是否可以使用bash脚本执行?

贝特朗·马特尔

假设您将所有ID放在一个id.txt以新行分隔的文件中

  • 构建要包含$in在您的查找请求(ObjectId('...'),...)中的ID列表
  • 使用--quiet为了不包括MongoDB的连接日志
  • 使用重定向输出 > your_file.json

Bash脚本:

file=id.txt
id_list=

while IFS= read -r id || [[ -n "$id" ]];
do
    if [ ! -z "$id_list" ]; then
        id_list="$id_list, ObjectId(\"$id\")"
    else
        id_list="ObjectId(\"$id\")"
    fi
done <"$file"

request="db['Student_DOCUMENTS.chunks'].find({_id :{\$in: ["$id_list"]}})"

mongo 127.0.0.1:10000/admin --username=user --password=pass \
    --quiet --eval "$request" > request.json

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章