簡體   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