<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title>Create a new Command</title> </head> <body><div class="manualnavbar" style="text-align: center;"> <div class="prev" style="text-align: left; float: left;"><a href="class.mongodb-driver-command.html">MongoDB\Driver\Command</a></div> <div class="next" style="text-align: right; float: right;"><a href="class.mongodb-driver-query.html">MongoDB\Driver\Query</a></div> <div class="up"><a href="class.mongodb-driver-command.html">MongoDB\Driver\Command</a></div> <div class="home"><a href="index.html">PHP Manual</a></div> </div><hr /><div id="mongodb-driver-command.construct" class="refentry"> <div class="refnamediv"> <h1 class="refname">MongoDB\Driver\Command::__construct</h1> <p class="verinfo">(mongodb >=1.0.0)</p><p class="refpurpose"><span class="refname">MongoDB\Driver\Command::__construct</span> — <span class="dc-title">Create a new Command</span></p> </div> <div class="refsect1 description" id="refsect1-mongodb-driver-command.construct-description"> <h3 class="title">Description</h3> <div class="methodsynopsis dc-description"> <span class="modifier">final</span> <span class="modifier">public</span> <span class="methodname"><strong>MongoDB\Driver\Command::__construct</strong></span> ( <span class="methodparam"><span class="type"><span class="type array|object">array|object</span></span> <code class="parameter">$document</code></span> [, <span class="methodparam"><span class="type">array</span> <code class="parameter">$commandOptions</code></span> ] )</div> <p class="para rdfs-comment"> Constructs a new <a href="class.mongodb-driver-command.html" class="classname">MongoDB\Driver\Command</a>, which is an immutable value object that represents a database command. The command may then be executed with <span class="methodname"><a href="mongodb-driver-manager.executecommand.html" class="methodname">MongoDB\Driver\Manager::executeCommand()</a></span>. </p> <p class="para"> The complete command document, which includes the command name and its options, should be expressed in the <code class="parameter">document</code> parameter. The <code class="parameter">commandOptions</code> parameter is only used to specify options related to the execution of the command and the resulting <a href="class.mongodb-driver-cursor.html" class="classname">MongoDB\Driver\Cursor</a>. </p> </div> <div class="refsect1 parameters" id="refsect1-mongodb-driver-command.construct-parameters"> <h3 class="title">Parameters</h3> <dl> <dt> <code class="parameter">document</code></dt> <dd> <p class="para"> The complete command document, which will be sent to the server. </p> </dd> <dt> <code class="parameter">commandOptions</code></dt> <dd> <blockquote class="note"><p><strong class="note">Note</strong>: <span class="simpara"> Do not use this parameter to specify options described in the command's reference in the MongoDB manual. This parameter should only be used for the options explicitly listed below. </span> </p></blockquote> <p class="para"> <table class="doctable table"> <caption><strong>commandOptions</strong></caption> <thead> <tr> <th>Option</th> <th>Type</th> <th>Description</th> </tr> </thead> <tbody class="tbody"> <tr> <td>maxAwaitTimeMS</td> <td><span class="type"><a href="language.types.integer.html" class="type integer">integer</a></span></td> <td> <p class="para"> Positive integer denoting the time limit in milliseconds for the server to block a getMore operation if no data is available. This option should only be used in conjunction with commands that return a tailable cursor (e.g. <a href="https://docs.mongodb.com/manual/changeStreams/" class="link external">» Change Streams</a>). </p> </td> </tr> </tbody> </table> </p> </dd> </dl> </div> <div class="refsect1 errors" id="refsect1-mongodb-driver-command.construct-errors"> <h3 class="title">Errors/Exceptions</h3> <ul class="simplelist"> <li class="member">Throws <a href="class.mongodb-driver-exception-invalidargumentexception.html" class="classname">MongoDB\Driver\Exception\InvalidArgumentException</a> on argument parsing errors.</li> </ul> </div> <div class="refsect1 changelog" id="refsect1-mongodb-driver-command.construct-changelog"> <h3 class="title">Changelog</h3> <p class="para"> <table class="doctable informaltable"> <thead> <tr> <th>Version</th> <th>Description</th> </tr> </thead> <tbody class="tbody"> <tr> <td>1.4.0</td> <td> <p class="para"> Added a second <code class="parameter">commandOptions</code> argument, which supports the <em>"maxAwaitTimeMS"</em> option. </p> </td> </tr> </tbody> </table> </p> </div> <div class="refsect1 examples" id="refsect1-mongodb-driver-command.construct-examples"> <h3 class="title">Examples</h3> <div class="example" id="mongoduplicatekeyexception.example.catch"> <p><strong>Example #1 <span class="function"><strong>MongoDB\Driver\Command::__construct()</strong></span> example</strong></p> <div class="example-contents"> <div class="phpcode"><code><span style="color: #000000"> <span style="color: #0000BB"><?php<br /><br />$manager </span><span style="color: #007700">= new </span><span style="color: #0000BB">MongoDB</span><span style="color: #007700">\</span><span style="color: #0000BB">Driver</span><span style="color: #007700">\</span><span style="color: #0000BB">Manager</span><span style="color: #007700">(</span><span style="color: #DD0000">"mongodb://localhost:27017"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$command </span><span style="color: #007700">= new </span><span style="color: #0000BB">MongoDB</span><span style="color: #007700">\</span><span style="color: #0000BB">Driver</span><span style="color: #007700">\</span><span style="color: #0000BB">Command</span><span style="color: #007700">(array(</span><span style="color: #DD0000">"buildinfo" </span><span style="color: #007700">=> </span><span style="color: #0000BB">1</span><span style="color: #007700">));<br /><br />try {<br /> </span><span style="color: #0000BB">$cursor </span><span style="color: #007700">= </span><span style="color: #0000BB">$manager</span><span style="color: #007700">-></span><span style="color: #0000BB">executeCommand</span><span style="color: #007700">(</span><span style="color: #DD0000">"admin"</span><span style="color: #007700">, </span><span style="color: #0000BB">$command</span><span style="color: #007700">);<br /> </span><span style="color: #0000BB">$response </span><span style="color: #007700">= </span><span style="color: #0000BB">$cursor</span><span style="color: #007700">-></span><span style="color: #0000BB">toArray</span><span style="color: #007700">()[</span><span style="color: #0000BB">0</span><span style="color: #007700">];<br />} catch(</span><span style="color: #0000BB">MongoDB</span><span style="color: #007700">\</span><span style="color: #0000BB">Driver</span><span style="color: #007700">\</span><span style="color: #0000BB">Exception $e</span><span style="color: #007700">) {<br /> echo </span><span style="color: #0000BB">$e</span><span style="color: #007700">-></span><span style="color: #0000BB">getMessage</span><span style="color: #007700">(), </span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br /> exit;<br />}<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$response</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">?></span> </span> </code></div> </div> <div class="example-contents"><p>The above example will output something similar to:</p></div> <div class="example-contents screen"> <div class="cdata"><pre> array(13) { ["version"]=> string(14) "2.8.0-rc2-pre-" ["gitVersion"]=> string(62) "b743d7158f7642f4da6b7eac8320374b3b88dc2e modules: subscription" ["OpenSSLVersion"]=> string(25) "OpenSSL 1.0.1f 6 Jan 2014" ["sysInfo"]=> string(104) "Linux infant 3.16.0-24-generic #32-Ubuntu SMP Tue Oct 28 13:07:32 UTC 2014 x86_64 BOOST_LIB_VERSION=1_49" ["loaderFlags"]=> string(91) "-fPIC -pthread -Wl,-z,now -rdynamic -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -Wl,-E" ["compilerFlags"]=> string(301) "-Wnon-virtual-dtor -Woverloaded-virtual -std=c++11 -fPIC -fno-strict-aliasing -ggdb -pthread -Wall -Wsign-compare -Wno-unknown-pragmas -Winvalid-pch -pipe -Werror -O3 -Wno-unused-local-typedefs -Wno-unused-function -Wno-deprecated-declarations -Wno-unused-but-set-variable -fno-builtin-memcmp -std=c99" ["allocator"]=> string(8) "tcmalloc" ["versionArray"]=> array(4) { [0]=> int(2) [1]=> int(8) [2]=> int(0) [3]=> int(-8) } ["javascriptEngine"]=> string(2) "V8" ["bits"]=> int(64) ["debug"]=> bool(false) ["maxBsonObjectSize"]=> int(16777216) ["ok"]=> float(1) } </pre></div> </div> </div> <div class="example" id="mongoprotocolexception.example.catch"> <p><strong>Example #2 <span class="function"><strong>MongoDB\Driver\Command::__construct()</strong></span> example</strong></p> <div class="example-contents"><p> Commands can accept options as well, as part of the normal structure that you create to send to the server. For example, the <em>maxTimeMS</em> option can be passed with most commands to restrict the amount of time a specific command can run for on the server. </p></div> <div class="example-contents"> <div class="phpcode"><code><span style="color: #000000"> <span style="color: #0000BB"><?php<br /><br />$manager </span><span style="color: #007700">= new </span><span style="color: #0000BB">MongoDB</span><span style="color: #007700">\</span><span style="color: #0000BB">Driver</span><span style="color: #007700">\</span><span style="color: #0000BB">Manager</span><span style="color: #007700">(</span><span style="color: #DD0000">"mongodb://localhost:27017"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$command </span><span style="color: #007700">= new </span><span style="color: #0000BB">MongoDB</span><span style="color: #007700">\</span><span style="color: #0000BB">Driver</span><span style="color: #007700">\</span><span style="color: #0000BB">Command</span><span style="color: #007700">(<br /> array(<br /> </span><span style="color: #DD0000">"distinct" </span><span style="color: #007700">=> </span><span style="color: #DD0000">"beer"</span><span style="color: #007700">,<br /> </span><span style="color: #DD0000">"key" </span><span style="color: #007700">=> </span><span style="color: #DD0000">"beer_name"</span><span style="color: #007700">,<br /> </span><span style="color: #DD0000">"maxTimeMS" </span><span style="color: #007700">=> </span><span style="color: #0000BB">10</span><span style="color: #007700">,<br /> )<br />);<br /><br />try {<br /> </span><span style="color: #0000BB">$cursor </span><span style="color: #007700">= </span><span style="color: #0000BB">$manager</span><span style="color: #007700">-></span><span style="color: #0000BB">executeCommand</span><span style="color: #007700">(</span><span style="color: #DD0000">"beerdb"</span><span style="color: #007700">, </span><span style="color: #0000BB">$command</span><span style="color: #007700">);<br /> </span><span style="color: #0000BB">$response </span><span style="color: #007700">= </span><span style="color: #0000BB">$cursor</span><span style="color: #007700">-></span><span style="color: #0000BB">toArray</span><span style="color: #007700">()[</span><span style="color: #0000BB">0</span><span style="color: #007700">];<br />} catch(</span><span style="color: #0000BB">MongoDB</span><span style="color: #007700">\</span><span style="color: #0000BB">Driver</span><span style="color: #007700">\</span><span style="color: #0000BB">Exception</span><span style="color: #007700">\</span><span style="color: #0000BB">Exception $e</span><span style="color: #007700">) {<br /> echo </span><span style="color: #0000BB">$e</span><span style="color: #007700">-></span><span style="color: #0000BB">getMessage</span><span style="color: #007700">(), </span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br /> exit;<br />}<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$response</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">?></span> </span> </code></div> </div> <div class="example-contents"><p>The above example will output something similar to:</p></div> <div class="example-contents screen"><br /> operation exceeded time limit<br /> </div> </div> </div> <div class="refsect1 seealso" id="refsect1-mongodb-driver-command.construct-seealso"> <h3 class="title">See Also</h3> <ul class="simplelist"> <li class="member"><span class="methodname"><a href="mongodb-driver-manager.executecommand.html" class="methodname" rel="rdfs-seeAlso">MongoDB\Driver\Manager::executeCommand()</a> - Execute a database command</span></li> <li class="member"><a href="class.mongodb-driver-cursor.html" class="classname">MongoDB\Driver\Cursor</a></li> </ul> </div> </div><hr /><div class="manualnavbar" style="text-align: center;"> <div class="prev" style="text-align: left; float: left;"><a href="class.mongodb-driver-command.html">MongoDB\Driver\Command</a></div> <div class="next" style="text-align: right; float: right;"><a href="class.mongodb-driver-query.html">MongoDB\Driver\Query</a></div> <div class="up"><a href="class.mongodb-driver-command.html">MongoDB\Driver\Command</a></div> <div class="home"><a href="index.html">PHP Manual</a></div> </div></body></html>