<!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>Adds a top-level key/value pair to a query</title> </head> <body><div class="manualnavbar" style="text-align: center;"> <div class="prev" style="text-align: left; float: left;"><a href="class.mongocursor.html">MongoCursor</a></div> <div class="next" style="text-align: right; float: right;"><a href="mongocursor.awaitdata.html">MongoCursor::awaitData</a></div> <div class="up"><a href="class.mongocursor.html">MongoCursor</a></div> <div class="home"><a href="index.html">PHP Manual</a></div> </div><hr /><div id="mongocursor.addoption" class="refentry"> <div class="refnamediv"> <h1 class="refname">MongoCursor::addOption</h1> <p class="verinfo">(PECL mongo >=1.0.4)</p><p class="refpurpose"><span class="refname">MongoCursor::addOption</span> — <span class="dc-title">Adds a top-level key/value pair to a query</span></p> </div> <div class="refsect1 description" id="refsect1-mongocursor.addoption-description"> <h3 class="title">Description</h3> <div class="methodsynopsis dc-description"> <span class="modifier">public</span> <span class="type"><a href="class.mongocursor.html" class="type MongoCursor">MongoCursor</a></span> <span class="methodname"><strong>MongoCursor::addOption</strong></span> ( <span class="methodparam"><span class="type">string</span> <code class="parameter">$key</code></span> , <span class="methodparam"><span class="type"><a href="language.pseudo-types.html#language.types.mixed" class="type mixed">mixed</a></span> <code class="parameter">$value</code></span> )</div> <p class="para rdfs-comment"> This is an advanced function and should not be used unless you know what you're doing. </p> <p class="para"> A query can optionally be nested in a "query" field if other options, such as a sort or hint, are given. For instance, adding a sort causes the query to become a subfield of a bigger query object, like: <div class="example-contents"> <div class="phpcode"><code><span style="color: #000000"> <span style="color: #0000BB"><?php<br /><br />$query </span><span style="color: #007700">= array(</span><span style="color: #DD0000">"query" </span><span style="color: #007700">=> </span><span style="color: #0000BB">$query</span><span style="color: #007700">, </span><span style="color: #DD0000">"orderby" </span><span style="color: #007700">=> </span><span style="color: #0000BB">$sort</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">?></span> </span> </code></div> </div> </p> <p class="para"> This method is for adding a top-level field to a query. It makes the query a subobject (if it isn't already) and adds the key/value pair of your chosing to the top level. </p> <div class="warning"><strong class="warning">Warning</strong> <p class="para"> It cannot be used to add extra criteria to a query on the fly. For instance, this <em class="emphasis">will not</em> work: <div class="example-contents"> <div class="phpcode"><code><span style="color: #000000"> <span style="color: #0000BB"><?php<br /><br /></span><span style="color: #FF8000">// NOT CORRECT<br /></span><span style="color: #0000BB">$cursor </span><span style="color: #007700">= </span><span style="color: #0000BB">$users</span><span style="color: #007700">-></span><span style="color: #0000BB">find</span><span style="color: #007700">()-></span><span style="color: #0000BB">addOption</span><span style="color: #007700">(</span><span style="color: #DD0000">"name"</span><span style="color: #007700">, </span><span style="color: #DD0000">"joe"</span><span style="color: #007700">)-></span><span style="color: #0000BB">addOption</span><span style="color: #007700">(</span><span style="color: #DD0000">"age"</span><span style="color: #007700">, </span><span style="color: #0000BB">20</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">?></span> </span> </code></div> </div> This <em class="emphasis">does not</em> query for a user named "joe" with an age of 20. </p> </div> </div> <div class="refsect1 parameters" id="refsect1-mongocursor.addoption-parameters"> <h3 class="title">Parameters</h3> <p class="para"> <dl> <dt> <span class="term"> <em><code class="parameter">key</code></em> </span> <dd> <p class="para"> Fieldname to add. </p> </dd> </dt> <dt> <span class="term"> <em><code class="parameter">value</code></em> </span> <dd> <p class="para"> Value to add. </p> </dd> </dt> </dl> </p> </div> <div class="refsect1 returnvalues" id="refsect1-mongocursor.addoption-returnvalues"> <h3 class="title">Return Values</h3> <p class="para"> Returns this cursor. </p> </div> <div class="refsect1 errors" id="refsect1-mongocursor.addoption-errors"> <h3 class="title">Errors/Exceptions</h3> <p class="para"> Throws <a href="class.mongocursorexception.html" class="classname">MongoCursorException</a> if this cursor has started iterating. </p> </div> <div class="refsect1 examples" id="refsect1-mongocursor.addoption-examples"> <h3 class="title">Examples</h3> <div class="example" id="example-1475"> <p><strong>Example #1 <span class="function"><strong>MongoCursor::addOption()</strong></span> example</strong></p> <div class="example-contents"><p> Using <span class="function"><a href="mongocursor.skip.html" class="function">MongoCursor::skip()</a></span> to skip over millions of results can become slow. One way around this is to use <em>$min</em> or <em>$max</em> options for the query. These can be handy, but they require an index on exactly the fields being searched for. This is an example of how to use <em>$min</em> as an alternative to <span class="function"><a href="mongocursor.skip.html" class="function">MongoCursor::skip()</a></span>. </p></div> <div class="example-contents"> <div class="phpcode"><code><span style="color: #000000"> <span style="color: #0000BB"><?php<br /><br /></span><span style="color: #FF8000">// make sure we have an index<br /></span><span style="color: #0000BB">$c</span><span style="color: #007700">-></span><span style="color: #0000BB">ensureIndex</span><span style="color: #007700">(array(</span><span style="color: #DD0000">"ts" </span><span style="color: #007700">=> </span><span style="color: #0000BB">1</span><span style="color: #007700">));<br /><br /></span><span style="color: #FF8000">// you may have to modify this to run in a reasonable amount of time on slow <br />// machines (should take about 30 seconds on a good machine)<br /></span><span style="color: #007700">for (</span><span style="color: #0000BB">$i </span><span style="color: #007700">= </span><span style="color: #0000BB">0</span><span style="color: #007700">; </span><span style="color: #0000BB">$i </span><span style="color: #007700">< </span><span style="color: #0000BB">30000000</span><span style="color: #007700">; </span><span style="color: #0000BB">$i</span><span style="color: #007700">++) {<br /> </span><span style="color: #0000BB">$c</span><span style="color: #007700">-></span><span style="color: #0000BB">insert</span><span style="color: #007700">(array(</span><span style="color: #DD0000">"ts" </span><span style="color: #007700">=> new </span><span style="color: #0000BB">MongoDate</span><span style="color: #007700">(), </span><span style="color: #DD0000">"i" </span><span style="color: #007700">=> </span><span style="color: #0000BB">$i</span><span style="color: #007700">));<br />}<br /><br /></span><span style="color: #0000BB">$now </span><span style="color: #007700">= </span><span style="color: #0000BB">strtotime</span><span style="color: #007700">(</span><span style="color: #DD0000">"now"</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">// find documents inserted in the last 2 seconds<br /></span><span style="color: #0000BB">$cursor </span><span style="color: #007700">= </span><span style="color: #0000BB">$c</span><span style="color: #007700">-></span><span style="color: #0000BB">find</span><span style="color: #007700">()-></span><span style="color: #0000BB">addOption</span><span style="color: #007700">(</span><span style="color: #DD0000">'$min'</span><span style="color: #007700">, array(</span><span style="color: #DD0000">"ts" </span><span style="color: #007700">=> </span><span style="color: #0000BB">$now</span><span style="color: #007700">-</span><span style="color: #0000BB">2</span><span style="color: #007700">));<br /><br /></span><span style="color: #0000BB">?></span> </span> </code></div> </div> </div> </div> </div><hr /><div class="manualnavbar" style="text-align: center;"> <div class="prev" style="text-align: left; float: left;"><a href="class.mongocursor.html">MongoCursor</a></div> <div class="next" style="text-align: right; float: right;"><a href="mongocursor.awaitdata.html">MongoCursor::awaitData</a></div> <div class="up"><a href="class.mongocursor.html">MongoCursor</a></div> <div class="home"><a href="index.html">PHP Manual</a></div> </div></body></html>