added $in section

git-svn-id: https://svn.php.net/repository/phpdoc/en/trunk@299248 c90b9560-bf6c-de11-be94-00142212c4b1
This commit is contained in:
Kristina Chodorow 2010-05-11 14:49:17 +00:00
parent 30859343d6
commit d2eb1917c4

View file

@ -59,19 +59,46 @@ $joe = $people->findOne(array("_id" => $pid));
<title>Arrays</title>
<para>
Suppose that we wish to find all documents with an array element of a given
value. For example, documents with a "gold" award, such as:
Arrays are special in a couple ways. First, there are two types that
MongoDB uses: "normal" arrays and associative arrays. Associative arrays can
have any mix of key types and values. "Normal" arrays are defined as arrays
with ascending numeric indexes starting at 0 and increasing by one for each
element. These are, typically, just your usual PHP array.
</para>
<programlisting>
<para>
For instance, if you want to save a list of awards in a document, you could
say:
</para>
<programlisting role="php">
<![CDATA[
<?php
$collection->save(array("awards" => array("gold", "silver", "bronze")));
?>
]]>
</programlisting>
<para>
Queries can reach into arrays to search for elements. Suppose that we wish
to find all documents with an array element of a given value. For example,
documents with a "gold" award, such as:
</para>
<programlisting>
<![CDATA[
{ "_id" : ObjectId("4b06c282edb87a281e09dad9"), "awards" : ["gold", "silver", "bronze"]}
]]>
</programlisting>
</programlisting>
<para>
This can be done with a simple query, ignoring the fact that "awards" is an
array:
</para>
<programlisting role="php">
<programlisting role="php">
<![CDATA[
<?php
@ -79,14 +106,14 @@ $joe = $people->findOne(array("_id" => $pid));
?>
]]>
</programlisting>
</para>
</programlisting>
<para>
Suppose we are querying for a more complex object, if each element of the
array were an object itself, such as:
</para>
<programlisting>
<programlisting>
<![CDATA[
{
"_id" : ObjectId("4b06c282edb87a281e09dad9"),
@ -104,27 +131,45 @@ $joe = $people->findOne(array("_id" => $pid));
]
}
]]>
</programlisting>
</programlisting>
<para>
Still ignoring that this is an array, we can use dot notation to query the
subobject:
</para>
<programlisting role="php">
<programlisting role="php">
<![CDATA[
<?php
$cursor = $collection->find(array("awards.first place" => "gold"));
$cursor = $collection->find(array("awards.first place" => "gold"));
?>
]]>
</programlisting>
</programlisting>
<para>
Notice that it doesn't matter that there is a space in the the field name
(although it may be best not to use spaces, just to make things more
readable).
</para>
</section>
<para>
You can also use an array to query for a number of possible values. For
instance, if we were looking for documents "gold" or "copper", we could do:
</para>
<programlisting role="php">
<![CDATA[
<?php
$cursor = $collection->find(array("awards" => array('$in' => array("gold", "copper"))));
?>
]]>
</programlisting>
</section>
</section>
<!-- Keep this comment at the end of the file