mirror of
https://github.com/sigmasternchen/php-doc-en
synced 2025-03-16 00:48:54 +00:00
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:
parent
30859343d6
commit
d2eb1917c4
1 changed files with 59 additions and 14 deletions
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue