File: addoption.xml

package info (click to toggle)
php-doc 20140201-1
  • links: PTS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 74,084 kB
  • ctags: 4,040
  • sloc: xml: 998,137; php: 20,812; cpp: 500; sh: 177; makefile: 63; awk: 28
file content (155 lines) | stat: -rw-r--r-- 4,163 bytes parent folder | download
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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
<?xml version="1.0" encoding="utf-8"?>

<!-- $Revision: 317663 $ -->
<refentry xml:id="mongocursor.addoption" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
 <refnamediv>
  <refname>MongoCursor::addOption</refname>
  <refpurpose>Adds a top-level key/value pair to a query</refpurpose>
 </refnamediv>

 <refsect1 role="description">
  &reftitle.description;
  <methodsynopsis>
   <modifier>public</modifier> <type>MongoCursor</type><methodname>MongoCursor::addOption</methodname>
   <methodparam><type>string</type><parameter>key</parameter></methodparam>
   <methodparam><type>mixed</type><parameter>value</parameter></methodparam>
  </methodsynopsis>
  <para>
   This is an advanced function and should not be used unless you know what 
   you're doing.
  </para>
  <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:
   <programlisting role="php">
<![CDATA[
<?php

$query = array("query" => $query, "orderby" => $sort);

?>
]]>
   </programlisting>
  </para>
  <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.
  </para>
  <warning>
   <para>
    It cannot be used to add extra criteria to a query on the fly.  For instance,
    this <emphasis>will not</emphasis> work:
    <programlisting role="php">
<![CDATA[
<?php

// NOT CORRECT
$cursor = $users->find()->addOption("name", "joe")->addOption("age", 20);

?>
]]>
    </programlisting>
    This <emphasis>does not</emphasis> query for a user named "joe" with an age of 20.
   </para>
  </warning>
 </refsect1>

 <refsect1 role="parameters">
  &reftitle.parameters;
  <para>
   <variablelist>
    <varlistentry>
     <term>
      <parameter>key</parameter>
     </term>
     <listitem>
      <para>
       Fieldname to add.
      </para>
     </listitem>
    </varlistentry>   
    <varlistentry>
     <term>
      <parameter>value</parameter>
     </term>
     <listitem>
      <para>
       Value to add.
      </para>
     </listitem>
    </varlistentry>   
   </variablelist>
  </para>
 </refsect1>

 <refsect1 role="returnvalues">
  &reftitle.returnvalues;  
  <para>
   Returns this cursor.
  </para>
 </refsect1>

 <refsect1 role="errors">
  &reftitle.errors;
  <para>
   Throws <classname>MongoCursorException</classname> if this cursor has started iterating.
  </para>
 </refsect1>

 <refsect1 role="examples">
  &reftitle.examples;
  <example>
   <title><function>MongoCursor::addOption</function> example</title>
   <para>
    Using <function>MongoCursor::skip</function> to skip over millions of 
    results can become slow.  One way around this is to use 
    <literal>$min</literal> or <literal>$max</literal> 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 <literal>$min</literal> as
    an alternative to <function>MongoCursor::skip</function>.
   </para>
   <programlisting role="php">
<![CDATA[
<?php

// make sure we have an index
$c->ensureIndex(array("ts" => 1));

// you may have to modify this to run in a reasonable amount of time on slow 
// machines (should take about 30 seconds on a good machine)
for ($i = 0; $i < 30000000; $i++) {
    $c->insert(array("ts" => new MongoDate(), "i" => $i));
}

$now = strtotime("now");

// find documents inserted in the last 2 seconds
$cursor = $c->find()->addOption('$min', array("ts" => $now-2));

?>
]]>
   </programlisting>
  </example>
 </refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->