user3259138
user3259138

Reputation: 441

PHP/MongoDB Query Assistance

I have a mongodb collection with multiple documents. I want to search all the documents, and return each documents instance of a record for 'foo'

Example Collection:

Object 1:
[_id] => MongoId Object (
    [$id] => 551993579285313235ebd120
)
[snaps] => Array (
    [0] => ["84062","3","","0-250000","1"]
    [1] => ["84062","4","","0-350000","1"]
)
[zip] => 84057

Object 2:
[_id] => MongoId Object (
    [$id] => 55198dfc928531ea36ebd11f
)
[zip] => testz

Object 3:
[_id] => MongoId Object (
    [$id] => 56a1594e9285319a0a22e15c
)
[snaps] => Array (
    [0] => ["84057","3","","0-250000","1"]
    [1] => ["84020","4","","0-350000","1"]
)
[zip] => 84062

I want to return object 1, and 3, but only the "snaps" records, and their values

Current code:

try {
                    $conn = new Mongo('localhost');
                    $db = $conn->remo_db1;
                    $c = $db->eudata;
                    $cursor = $c->find(array('snaps'));
                    foreach($cursor as $obj) {
                        echo $obj['snaps'];
                    }

                // disconnect from server
                $conn->close();
                }  catch (MongoConnectionException $e) {
                    die('Error connecting to MongoDB server');
                } catch (MongoException $e) {
                    die('Error: ' . $e->getMessage());
                }

Upvotes: 0

Views: 39

Answers (2)

Some Juan
Some Juan

Reputation: 104

Here is a guide on how to implement any mongoDb query in php:

http://php.net/manual/en/mongo.sqltomongo.php

Upvotes: 0

Some Juan
Some Juan

Reputation: 104

The following will return all objects in the collection with non-empty 'snaps' records and their values:

$cursor = $c->find( array('snaps'=>array('$nin' => array(' ','',null))), array('snaps'=>true));

The first parameter is the query. It returns all objects in the collection that contain non-empty 'snaps' values.

The second parameter makes it so only the 'snaps' field gets returned. (If you want to return all the fields, simply remove the second parameter).

Hope it helps!

Upvotes: 1

Related Questions