我正在尝试在mongo shell中使用脚本js。我正在读关于这个主题的书。我尝试了几种选择,例如在计算机上的特定位置打开cmd。我在这里发现了问题“如何通过shell脚本执行mongo命令?”,但似乎对我没有任何作用。我的mongo工作正常,只要在cmd上键入mongo即可输入mongo。但是,它找不到js文件。我正在使用Windows;什么都知道引擎盖下会发生什么?
以下示例:
mongo demo.js
2020-02-20T11:03:33.098-0300 E - [main] file [demo.js] doesn't exist
2020-02-20T11:03:33.098-0300 F - [main] failed to load: demo.js
2020-02-20T11:03:33.098-0300 E - [main] exiting with code -3
使用此命令创建my_script.js
文件:
db.testColl.insertOne( { a: "hello" } )
将脚本文件放置在当前目录中。
1。从OS命令行运行JS脚本:
在操作系统提示符下执行此操作:
> mongo localhost/testDB my_script.js
一旦运行以上命令,您将看到如下输出(类似,具体取决于您的MongoDB版本和操作系统):
MongoDB shell version v4.2.3
connecting to: mongodb://localhost:27017/testdb?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("456b350f-668f-4389-9901-7c456e2c50fe") }
MongoDB server version: 4.2.3
现在,从Mongo Shell(例如,执行mongo
,然后从mongo提示符):
mongo > use testDB
mongo > show collections
您将看到列出的testColl
。
mongo > db.testColl.find()
{ "_id" : ObjectId("5e4ea0d05816162b300b0346"), "a" : "hello" }
这是根据testDB
中的命令在testColl
数据库和集合my_script.js
中创建的文档。
2。从Mongo Shell运行JS脚本:
此外,您也可以从Mongo Shell中运行my_script.js
。
mongo > load("my_script.js")
true
mongo > db.test.find()
{ "_id" : ObjectId("5e4ea0d05816162b300b0346"), "a" : "hello" }
{ "_id" : ObjectId("5e4ea10f276cde8fc5fedec5"), "a" : "hello" }
请参见有两个具有不同_id
字段值的文档。
注意:我想您只能从.js
文件中运行某些命令。
3。另一个例子:
创建具有以下内容的名为script2.js
的JS文件:
db.test.find().forEach(printjson)
注意printjson
shell方法将文档打印到shell输出。
mongo > load("script2.js")
{ "_id" : ObjectId("5e4ea0d05816162b300b0346"), "a" : "hello" }
{ "_id" : ObjectId("5e4ea10f276cde8fc5fedec5"), "a" : "hello" }