From d2eb1917c4999c4176f80a1726390c14eba30614 Mon Sep 17 00:00:00 2001 From: Kristina Chodorow Date: Tue, 11 May 2010 14:49:17 +0000 Subject: [PATCH] added $in section git-svn-id: https://svn.php.net/repository/phpdoc/en/trunk@299248 c90b9560-bf6c-de11-be94-00142212c4b1 --- reference/mongo/queries.xml | 73 ++++++++++++++++++++++++++++++------- 1 file changed, 59 insertions(+), 14 deletions(-) diff --git a/reference/mongo/queries.xml b/reference/mongo/queries.xml index 74014286a1..6422dcba37 100644 --- a/reference/mongo/queries.xml +++ b/reference/mongo/queries.xml @@ -59,19 +59,46 @@ $joe = $people->findOne(array("_id" => $pid)); Arrays - 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. + - + + For instance, if you want to save a list of awards in a document, you could + say: + + + +save(array("awards" => array("gold", "silver", "bronze"))); + +?> +]]> + + + + 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: + + + - - + + + This can be done with a simple query, ignoring the fact that "awards" is an array: + - + findOne(array("_id" => $pid)); ?> ]]> - - + Suppose we are querying for a more complex object, if each element of the array were an object itself, such as: + - + findOne(array("_id" => $pid)); ] } ]]> - + + Still ignoring that this is an array, we can use dot notation to query the subobject: + - + find(array("awards.first place" => "gold")); +$cursor = $collection->find(array("awards.first place" => "gold")); ?> ]]> - + + 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). - + + 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: + + + +find(array("awards" => array('$in' => array("gold", "copper")))); + +?> +]]> + + +