总结
1 使用js进行获取数据的方法
2 js方式和原生mongo shell的交互方式的区别写法
3 需要将所有数据打印出来使用到的循环示例
cursor = db.collection.find(); while ( cursor.hasNext() ) { printjson( cursor.next() ); }
4 介绍怎么外部执行js文件
5 介绍怎么在mongo shell中加载js文件
You can write scripts for the mongo
shell in JavaScript that manipulate data in MongoDB or perform administrative operation. For more information about the mongo
shell, see the Running .js files via a mongo shell Instance on the Server section for more information about using these mongo
script.
This tutorial provides an introduction to writing JavaScript that uses the mongo
shell to access MongoDB.
Opening New Connections
From the mongo
shell or from a JavaScript file, you can instantiate database connections using the Mongo()
constructor:
new Mongo()
new Mongo(<host>)
new Mongo(<host:port>)
Consider the following example that instantiates a new connection to the MongoDB instance running on localhost on the default port and sets the global db
variable to myDatabase
using the getDB()
method:
conn = new Mongo();
db = conn.getDB("myDatabase");
If connecting to a MongoDB instance that enforces access control, you can use the db.auth()
method to authenticate.
Additionally, you can use the connect()
method to connect to the MongoDB instance. The following example connects to the MongoDB instance that is running on localhost
with the non-default port 27020
and set the global db
variable:
db = connect("localhost:27020/myDatabase");
SEE ALSO
Differences Between Interactive and Scripted mongo
When writing scripts for the mongo
shell, consider the following:
-
To set the
db
global variable, use thegetDB()
method or theconnect()
method. You can assign the database reference to a variable other thandb
. -
Write operations in the
mongo
shell use a write concern of { w: 1 } by default. If performing bulk operations, use theBulk()
methods. See Write Method Acknowledgements for more information.Changed in version 2.6: Before MongoDB 2.6, call
db.getLastError()
explicitly to wait for the result of write operations. -
You cannot use any shell helper (e.g.
use <dbname>
,show dbs
, etc.) inside the JavaScript file because they are not valid JavaScript.The following table maps the most common
mongo
shell helpers to their JavaScript equivalents.Shell Helpers JavaScript Equivalents show dbs
,show databases
db.adminCommand('listDatabases')
use <db>
db = db.getSiblingDB('<db>')
show collections
db.getCollectionNames()
show users
db.getUsers()
show roles
db.getRoles({showBuiltinRoles: true})
show log <logname>
db.adminCommand({ 'getLog' : '<logname>' })
show logs
db.adminCommand({ 'getLog' : '*' })
it
cursor = db.collection.find() if ( cursor.hasNext() ){ cursor.next(); }
-
In interactive mode,
mongo
prints the results of operations including the content of all cursors. In scripts, either use the JavaScriptprint()
function or themongo
specificprintjson()
function which returns formatted JSON.EXAMPLE
To print all items in a result cursor in
mongo
shell scripts, use the following idiom:cursor = db.collection.find(); while ( cursor.hasNext() ) { printjson( cursor.next() ); }
Scripting
From the system prompt, use mongo
to evaluate JavaScript.
--eval
option
Use the --eval
option to mongo
to pass the shell a JavaScript fragment, as in the following:
mongo test --eval "printjson(db.getCollectionNames())"
This returns the output of db.getCollectionNames()
using the mongo
shell connected to the mongod
ormongos
instance running on port 27017
on the localhost
interface.
Execute a JavaScript file
You can specify a .js
file to the mongo
shell, and mongo
will execute the JavaScript directly. Consider the following example:
mongo localhost:27017/test myjsfile.js
This operation executes the myjsfile.js
script in a mongo
shell that connects to the test
database on the mongod
instance accessible via the localhost
interface on port 27017
.
Alternately, you can specify the mongodb connection parameters inside of the javascript file using the Mongo()
constructor. See Opening New Connections for more information.
You can execute a .js
file from within the mongo
shell, using the load()
function, as in the following:
load("myjstest.js")
This function loads and executes the myjstest.js
file.
The load()
method accepts relative and absolute paths. If the current working directory of the mongo
shell is /data/db
, and the myjstest.js
resides in the /data/db/scripts
directory, then the following calls within the mongo
shell would be equivalent:
load("scripts/myjstest.js")
load("/data/db/scripts/myjstest.js")
NOTE
There is no search path for the load()
function. If the desired script is not in the current working directory or the full specified path, mongo
will not be able to access the file.