Reputation: 441
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
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
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