【问题标题】:command line argument to a javascript file that works on mongodb适用于 mongodb 的 javascript 文件的命令行参数
【发布时间】:2014-04-25 14:05:26
【问题描述】:

我有一个适用于 MongoDB 的 javascript 文件 ( .js )。我运行 .js 文件为 mongo localhost:27017/dbname myjsfile.js .

如何在运行此 JavaScript 文件时发送命令行参数?我想将数据库名称和集合名称作为命令行参数发送。

【问题讨论】:

    标签: javascript mongodb command-line


    【解决方案1】:

    嗯,当您通过以下方式连接时,您已经设置了正在使用的数据库:

    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 集合。

    【讨论】:

    • 你的回复我不清楚。你没有清楚地告诉我如何将集合名称作为命令行参数传递。
    • @prashantas 还有更多信息。这说明清楚了吗?
    • 我知道 --eval 会起作用,但它与传递 shell 变量不同
    • @wayne 没必要。为什么要解析 JSON 而不仅仅是 load() JavaScript。另外,问题是“从命令行”提出的,而您的回答是“不,您不能”。因此发表评论。
    • 同意不需要 load() javascript 而不是解析。我觉得 parse 给了你一个捕捉错误的机会。同意您回答该部分可以通过命令行,但 --eval 不是许多用例的解决方案所必需的。
    【解决方案2】:

    cli 参数号。但是你可以读取一个 json 文件并在你的脚本中解析它。

    // config.json - {"dbname":"dbname","collection":"mycollection"}
    var args = JSON.parse(cat("config.json"));
    

    【讨论】:

    • 不正确。您在加载的 JavaScript 文件中设置的任何内容都将被评估。您甚至可以将load() 用于其他文件。但当然你可以在命令行上使用--eval,正如我所演示的那样。看看并自己尝试一下。
    猜你喜欢
    • 2021-10-30
    • 2017-06-26
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-26
    • 2014-12-05
    • 1970-01-01
    相关资源
    最近更新 更多