【发布时间】:2014-04-25 14:05:26
【问题描述】:
我有一个适用于 MongoDB 的 javascript 文件 ( .js )。我运行 .js 文件为 mongo localhost:27017/dbname myjsfile.js .
如何在运行此 JavaScript 文件时发送命令行参数?我想将数据库名称和集合名称作为命令行参数发送。
【问题讨论】:
标签: javascript mongodb command-line
我有一个适用于 MongoDB 的 javascript 文件 ( .js )。我运行 .js 文件为 mongo localhost:27017/dbname myjsfile.js .
如何在运行此 JavaScript 文件时发送命令行参数?我想将数据库名称和集合名称作为命令行参数发送。
【问题讨论】:
标签: javascript mongodb command-line
嗯,当您通过以下方式连接时,您已经设置了正在使用的数据库:
mongo localhost:27017/dbname
所以它现在在数据库“dbname”上。这将传递给db 变量。这只是“当前”数据库对象的占位符。
这意味着您的“脚本”中的任何内容:
var results = db.collection.find().toArray();
例如正在使用您选择的数据库和您命名的集合。
需要更多?这适用于:
db["mycollection"].find();
这只是 shell 的 JavaScript。
如果您希望将集合设置为变量,请执行以下操作:
mongo localhost/mydb --eval "var users = db.users" myfile.js
或者只是在你的 JavaScript 文件中这样做。您可以通过以下方式进行测试:
mongo localhost/mydb --eval "var users = db.users" --shell
在 shell 中,您现在有一个变量 users,它被“别名”到 users 集合。
【讨论】:
load() JavaScript。另外,问题是“从命令行”提出的,而您的回答是“不,您不能”。因此发表评论。
cli 参数号。但是你可以读取一个 json 文件并在你的脚本中解析它。
// config.json - {"dbname":"dbname","collection":"mycollection"}
var args = JSON.parse(cat("config.json"));
【讨论】:
load() 用于其他文件。但当然你可以在命令行上使用--eval,正如我所演示的那样。看看并自己尝试一下。