从 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中的 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

最新更新