Configure the mongo
Shell
On this page
Warning
The following document pertains to the mongo
shell, included in the MongoDB Server Download.
For information on the new MongoDB Shell (mongosh
) refer to the
mongosh documentation.
To understand the differences between the two shells, see
Comparison of the mongo
Shell and mongosh
.
Customize the Prompt
You may modify the content of the prompt by setting the variable
prompt
in the mongo
shell. The prompt
variable can
hold strings as well as JavaScript code. If prompt
holds a function
that returns a string, the mongo
shell can display
dynamic information in each prompt.
You can add the logic for the prompt in the .mongorc.js file to set the prompt each time you start up the
mongo
shell.
Customize Prompt to Display Number of Operations
For example,to create a mongo
shell prompt with the number
of operations issued in the current session, define the following
variables in the mongo
shell:
cmdCount = 1; prompt = function() { return (cmdCount++) + "> "; }
The prompt would then resemble the following:
1> 2> 3>
Customize Prompt to Display Database and Hostname
To create a mongo
shell prompt in the form of
<database>@<hostname>$
, define the following variables:
host = db.serverStatus().host; prompt = function() { return db+"@"+host+"$ "; }
The prompt would then resemble the following:
test@myHost1$
Customize Prompt to Display Up Time and Document Count
To create a mongo
shell prompt that contains the system
up time and the number of documents in the current database,
define the following prompt
variable in the mongo
shell:
prompt = function() { return "Uptime:"+db.serverStatus().uptime+" Documents:"+db.stats().objects+" > "; }
The prompt would then resemble the following:
Uptime:5897 Documents:6 >
Use an External Editor in the mongo
Shell
You can use your own editor in the mongo
shell by setting
the EDITOR
environment variable before starting the
mongo
shell.
export EDITOR=vim mongo
Once in the mongo
shell, you can edit with the specified
editor by typing edit <variable>
or edit <function>
, as in the
following example:
Define a function
myFunction
:function myFunction () { } Edit the function using your editor:
edit myFunction The command should open the
vim
edit session. When finished with the edits, save and exitvim
edit session.In the
mongo
shell, typemyFunction
to see the function definition:myFunction The result should be the changes from your saved edit:
function myFunction() { print("This was edited"); }
Note
As the mongo
shell interprets code edited in an
external editor, it may modify code in functions, depending on the
JavaScript compiler. For example, the mongo
shell may
convert 1+1
to 2
or remove comments. The actual changes
affect only the appearance of the code and will vary based on the
version of JavaScript used but will not affect the semantics of the
code.
Change the mongo
Shell Batch Size
The db.collection.find()
method is the JavaScript method to
retrieve documents from a collection. The
db.collection.find()
method returns a cursor to the
results; however, in the mongo
shell, if the returned
cursor is not assigned to a variable using the var
keyword, then the
cursor is automatically iterated up to 20 times to print up to the
first 20 documents that match the query. The mongo
shell
will prompt Type it
to iterate another 20 times.
You can set the DBQuery.shellBatchSize
attribute to change the
number of documents from the default value of 20
, as in the
following example which sets it to 10
:
DBQuery.shellBatchSize = 10;