![](/img/trans.png)
[英]Can I read a csv file inside of a Mongo Shell Javascript file?
[英]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.