-
Notifications
You must be signed in to change notification settings - Fork 1.7k
/
db.eval.txt
122 lines (73 loc) · 2.61 KB
/
db.eval.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
=========
db.eval()
=========
.. Edits to this page should be carried over to the command eval.txt
file. HOWEVER, the parameters are different between command and method.
.. default-domain:: mongodb
.. contents:: On this page
:local:
:backlinks: none
:depth: 1
:class: singlecol
Definition
----------
.. method:: db.eval(function, arguments)
.. deprecated:: 3.0
Provides the ability to run JavaScript code on the MongoDB server.
.. |list| replace:: A list
.. include:: /includes/fact-eval-helper-method.rst
The method accepts the following parameters:
.. list-table::
:header-rows: 1
:widths: 20 20 80
* - Parameter
- Type
- Description
* - ``function``
- function
- A JavaScript function to execute.
* - ``arguments``
- list
- Optional. A list of arguments to pass to the JavaScript function. Omit if the function does not take arguments.
The JavaScript function need not take any arguments, as in the first example,
or may optionally take arguments as in the second:
.. code-block:: javascript
function () {
// ...
}
.. code-block:: javascript
function (arg1, arg2) {
// ...
}
Behavior
--------
.. |object| replace:: :method:`db.eval()`
.. |nolockobject| replace:: :dbcommand:`eval` *command*
.. include:: /includes/admonitions-eval.rst
Examples
--------
The following is an example of the :method:`db.eval()` method:
.. include:: /includes/examples-eval.rst
:start-after: .. eval-method-example
- The ``db`` in the function refers to the current database.
- ``"eliot"`` is the argument passed to the function, and corresponds to
the ``name`` argument.
- ``5`` is an argument to the function and corresponds to the
``incAmount`` field.
If you want to use the server's interpreter, you must run
:method:`db.eval()`. Otherwise, the :binary:`~bin.mongo` shell's JavaScript
interpreter evaluates functions entered directly into the shell.
If an error occurs, :method:`db.eval()` throws an exception. The
following is an example of an invalid function that uses the variable
``x`` without declaring it as an argument:
.. code-block:: javascript
db.eval( function() { return x + x; }, 3 );
The statement results in the following exception:
.. code-block:: javascript
{
"errmsg" : "exception: JavaScript execution failed: ReferenceError: x is not defined near '{ return x + x; }' ",
"code" : 16722,
"ok" : 0
}
.. seealso::
:doc:`/core/server-side-javascript`