【问题标题】:How can I run a bare JavaScript file with Mongo Shell?如何使用 Mongo Shell 运行裸 JavaScript 文件?
【发布时间】:2021-04-07 09:24:48
【问题描述】:

我知道 MongoDB 有一个 Nodejs 驱动程序,而且所有 MongoDB 命令本质上都是 JavaScript 代码。有没有一种方法可以直接运行 JavaScript 文件而不依赖于 Nodejs 驱动程序?例如: mongo somejavascriptfile.js,是否愿意与您的数据库进行交互?假设somejavascriptfile.js 有这种内容。

use companies;
show collections;

db.myCollection.insertOne({name: "New Company", location: "Nice Location"});

【问题讨论】:

标签: javascript database mongodb mongo-shell


【解决方案1】:

更新

https://docs.mongodb.com/manual/tutorial/write-scripts-for-the-mongo-shell/#--eval-option

使用 mongo 的 --eval 选项向 shell 传递一个 JavaScript 片段,如下所示:

mongo test --eval "printjson(db.getCollectionNames())"

选项 1-

// somejavascriptfile.js

db.myCollection.insertOne({name: "New Company1", location: "Nice Location"})
// run
mongo myDB somejavascriptfile.js

选项 2-

// somejavascriptfile.js
db.getSiblingDB('companies').myCollection.insertOne({name: "New Company", location: "Nice Location"});
db.getSiblingDB('companies1').myCollection.insertOne({name: "New Company", location: "Nice Location"});
db.getSiblingDB('companies3').myCollection.insertOne({name: "New Company", location: "Nice Location"})
// run
mongo somejavascriptfile.js

是的,你可以像这样运行脚本somejavascriptfile.js

mongo myDB somejavascriptfile.js // on a specific databse

mongo somejavascriptfile.js

https://docs.mongodb.com/manual/reference/program/mongo/#std-option-mongo.--eval

--评估 计算指定为参数的 JavaScript 表达式。 mongo 在评估代码时不会加载自己的环境。因此,shell 环境的许多选项都不可用。

mongo myDB --eval "var myVar = 'testVar'" somejavascriptfile.js // pass some variables to your script

另外,请阅读

https://docs.mongodb.com/manual/reference/method/load/

将 JavaScript 文件加载并运行到当前 shell 环境中。

load() 方法有以下参数:

load("scripts/myjstest.js")
load("/data/db/scripts/myjstest.js")

【讨论】:

【解决方案2】:

除了提供的答案,您还可以运行

echo 'db.myCollection.insertOne({name: "New Company1", location: "Nice Location"})' | mongo myDB

mongo myDB <<< 'db.myCollection.insertOne({name: "New Company1", location: "Nice Location"})' 

mongo myDB <<EOF
use companies;
show collections;
db.myCollection.insertOne({name: "New Company", location: "Nice Location"});
EOF

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-03
    • 1970-01-01
    • 1970-01-01
    • 2020-03-12
    相关资源
    最近更新 更多