如何将逗号分隔的字符串作为参数传递给Mongo Script?

时间:2019-07-15 06:38:48

标签: javascript mongodb shell scripting export-csv

我有下面的mongo游标逻辑,该逻辑以逗号分隔的字符串作为$ in条件的输入。

student.js
==========
db.getCollection('student').aggregate([
  { $match : { id : {$in: [
      '100','101','102']} } }
])

然后我使用以下bash脚本将上述查询的结果集转储到csv文件中:

student.sh
==========

#!/usr/bin/env bash

IDS_FILE="$1"
auth=""
host="localhost:27017"

while IFS=$'\r' read -r id || [[ -n "$id" ]]; do

echo "id ::" $id
ids=$ids','"'$id'"
ids="${ids}"

done < "${IDS_FILE}"

id="${ids:1}"
echo $id

mongo --quiet ${auth} ${host}/school --eval "var id = $id" student.js >> out.csv

我正在使用下面输入了ids.txt的命令运行上述脚本文件,

./student.sh ids.txt

此ids.txt包含以下学生ID。

ids.txt
=======
1
2
3

在上面提到的student.sh文件的此回显行号中,我正在获得低于id的打印,

echo $id

'1','2','3'

这是绝对可以预期的,但是当我尝试通过以下mongo命令将这些$ id值发送到student.js $ in条件时,我得到了以下错误,

mongo --quiet ${auth} ${host}/school --eval "var id = $id" student.js >> out.csv

在上面的var id = $ id id中被替换为'1','2','3'

错误:

E QUERY    [js] SyntaxError: missing variable name @(shell eval):1:

有人可以帮助我了解如何使用 $ in 查询将外壳程序脚本mongo命令中的逗号分隔字符串传递到.js文件吗?

我在mongo命令中尝试了多个argumnets / fields,但是该如何将多个用逗号分隔的字符串发送到Mongo脚本中的单个参数/字段?

谢谢。

0 个答案:

没有答案