您可以用javascript编写mongo shell的脚本,以便在mongodb中操作数据或执行管理操作。
本教程介绍如何编写使用mongo shell访问mongodb的javascript。
从mongo shell或javascript文件,可以使用mongo()构造函数实例化数据库连接:
new Mongo()
new Mongo(<host>)
new Mongo(<host:port>)
考虑下面的示例,该示例实例化到默认端口上本地主机上运行的mongodb实例的新连接,并使用getdb()选择数据库mydatabase为当前数据库:
conn = new Mongo();
db = conn.getDB("myDatabase");
如果连接到强制访问控制的MongoDB实例,则可以使用db.auth()方法进行身份验证。
此外,还可以使用connect()方法连接MongoDB实例。以下示例连接到使用非默认端口27018在本地主机上运行的MongoDB实例,并设置全局DB变量:
> db=connect("localhost:27018")
connecting to: localhost:27018
Implicit session: session { "id" : UUID("4fb851d6-fb74-472f-abb5-68ef675556cf") }
MongoDB server version: 4.0.6
test
> db=connect("localhost:27018/myDatabase")
connecting to: mongodb://localhost:27018/myDatabase
Implicit session: session { "id" : UUID("bb409c38-6ff6-40c9-90b3-bd7bcdaabb60") }
MongoDB server version: 4.0.6
myDatabase
更多请参考:mongo Shell Methods
为Mongo Shell编写脚本时,请考虑以下内容:
Shell Helpers | JavaScript Equivalents |
---|---|
show dbs, show databases | db.adminCommand(‘listDatabases’) |
use | db = db.getSiblingDB(’’) |
show collections | db.getCollectionNames() |
show users | db.getUsers() |
show roles | db.getRoles({showBuiltinRoles: true}) |
show log | db.adminCommand({ ‘getLog’ : ‘’ }) |
show logs | db.adminCommand({ ‘getLog’ : ‘*’ }) |
it | cursor = db.collection.find() if ( cursor.hasNext() ){ cursor.next(); } |
cursor = db.collection.find();
while ( cursor.hasNext() ) {
printjson( cursor.next() );
}
在系统提示下,使用mongo评估javascript。
使用–eval选项mongo向shell传递一个javascript片段,如下所示:
$ mongo test --eval "printjson(db.getCollectionNames())"
MongoDB shell version v4.0.6
connecting to: mongodb://127.0.0.1:27017/test?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("19124a55-be9b-4342-bdb7-af076b4a22f6") }
MongoDB server version: 4.0.6
[ ]
$ mongo localhost:27017/test myjsfile.js
此操作在mongo shell中执行myjsfile.js脚本,该脚本连接到可通过端口27017上的localhost接口访问的mongod实例上的测试数据库。
> load("myjstest.js")
方法接受相对路径和绝对路径。如果mongo shell的当前工作目录是/data/db,而myjstest.js位于/data/db/scripts目录中,那么mongo shell中的以下调用将是等效的:
> load("scripts/myjstest.js")
> load("/data/db/scripts/myjstest.js")