bash - 从 bash 脚本运行 mongo 命令

标签 bash mongodb

我正在尝试从 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 中的 id 列表 (ObjectId('...'),...)
  • 使用--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

关于bash - 从 bash 脚本运行 mongo 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44593374/

相关文章:

linux - 如何将输出直接用作命令

c# - MSBuild失败: IsOsPlatform not found

database - 当集合被更改时,MongoDB 游标如何表现?

linux - 如何转义 bash 脚本命令行中传递的参数

bash - 没有这样的文件或目录 : Cannot execute but is visible to ls, file and tab-completion

git - 如何使用 git 和 git hooks 同步数据库以及如果它不起作用如何调试

node.js - 在嵌套文档中添加元素然后检索 _id

node.js - 发送消息(对象)以及 404 状态代码(nodejs)

javascript - Mongodb将文档推送到嵌套在对象值中的数组中

python - 在 CMake 中运行调用 Glad