如何将参数传递给 Mongo 脚本
How to pass argument to Mongo Script
我一直在使用mongo和脚本文件,如下所示:
$ mongo getSimilar.js
我想将参数传递给文件:
$ mongo getSimilar.js apples
然后在脚本文件中选取传入的参数。
var arg = $1;
print(arg);
使用 --eval
并使用 shell 脚本来修改传入的命令。
mongo --eval "print('apples');"
或者制作全局变量(归功于泰德·马歇尔):
$ cat addthem.js
printjson( param1 + param2 );
$ ./mongo --nodb --quiet --eval "var param1=7, param2=8" addthem.js
15
你不能这样做,但你可以把它们放在另一个脚本中并首先加载它:
// vars.js
msg = "apples";
和得到相似.js是:
print(msg);
然后:
$ mongo vars.js getSimilar.js
MongoDB shell version: blah
connecting to: test
loading file: vars.js
loading file: getSimilar.js
apples
不过,不太方便。
设置一个外壳变量:
password='bladiebla'
创建 js 脚本:
cat <<EOT > mongo-create-user.js
print('drop user admin');
db.dropUser('admin');
db.createUser({
user: 'admin',
pwd: '${password}',
roles: [ 'readWrite']
});
EOT
将脚本传递给 mongo:
mongo mongo-create-user.js
> 2022 年更新:
使用mongosh
时,您可以从process.argv
读取执行参数
mongosh script.js param1 param2
// process.argv will be [.... , 'param1', param2']
棘手的一点是mongosh
将尝试执行参数(例如 param1
和 param2
) 作为附加脚本,但这可以通过使用 quit()
结束脚本来防止。(TBH,我不确定这是设计使然/有意/有记录)
我使用 shell 脚本将 mongo 命令通过管道传输到 mongo。在 mongo 命令中,我使用了传递给 shell 脚本的 arg(即我使用了 $1
):
#!/bin/sh
objId=$1
EVAL="db.account.find({'"_id'" : '"$objId'"})"
echo $EVAL | mongo localhost:27718/balance_mgmt --quiet
我写了一个小工具来为自己解决问题。使用 mongoexec
实用程序,您可以通过在脚本开头添加以下内容来运行命令./getSimilar.js apples
:
#!/usr/bin/mongoexec --quiet
在脚本中,您可以访问参数作为args[0]
。
https://github.com/pveierland/mongoexec
我通过使用javascript捆绑器包解决了这个问题:https://parceljs.org/
有了这个,可以在脚本中使用节点环境变量,例如:
var collection = process.env.COLLECTION;
使用宗地构建时,环境 var 会内联:
parcel build ./src/index.js --no-source-maps
唯一的缺点是,每次要更改 env var 时都必须重建脚本。但是由于包裹真的很快,恕我直言,这不是一个真正的问题。
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 借助asp.net验证或java脚本对多个文本进行验证
- chrome扩展:尽管运行了at:documentidle,js脚本还是过早启动
- Java脚本时间添加
- 不显示带有本地json文件数据的谷歌地图脚本
- JQuery添加元素需要在我的js之前再次添加JQuery脚本
- 从远程脚本获取用户IP
- 如何根据时间运行不同的脚本
- 如何将字符串值从php页面发送到java脚本页面
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- 测试mongo脚本中是否存在参数
- 使用 mongo 脚本导入 JSON
- MongoDB,为 mongo shell 创建脚本
- 如何在 Mongo 脚本中解析 JSON
- 如何将参数传递给 Mongo 脚本
- 如何在mongo中为.js脚本编写for循环,以便在文本文件中传递数据库名称变量
- 如何从发送给Mongo的脚本中返回值
- Mongo脚本在本地运行很快,但如果在远程实例上运行就很慢
- 如何动态$set字段名从变量在Mongo脚本
- 如何并发运行mongo脚本