繁体   English   中英

如何使用 Mongo Shell 运行裸 JavaScript 文件?

[英]How can I run a bare JavaScript file with Mongo Shell?

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

use companies;
show collections;

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

更新

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

--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")

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM