MongoCollection
在线手册:中文 英文
PHP手册

MongoCollection::findOne

(PECL mongo >=0.9.0)

MongoCollection::findOneQuerys this collection, returning a single element

说明

public array MongoCollection::findOne ([ array $query = array() [, array $fields = array() ]] )

As opposed to MongoCollection::find(), this method will return only the first result from the result set, and not a MongoCursor that can be iterated over.

参数

query

The fields for which to search. MongoDB's query language is quite extensive. The PHP driver will in almost all cases pass the query straight through to the server, so reading the MongoDB core docs on » find is a good idea.

Warning

Please make sure that for all special query operaters (starting with $) you use single quotes so that PHP doesn't try to replace "$exists" with the value of the variable $exists.

fields

Fields of the results to return. The array is in the format array('fieldname' => true, 'fieldname2' => true). The _id field is always returned.

返回值

Returns record matching the search or NULL.

错误/异常

Throws MongoConnectionException if it cannot reach the database.

范例

Example #1 MongoCollection::findOne() document by its id.

This example demonstrates how to find a single document in a collection by its id.

<?php

$articles 
$mongo->my_db->articles;

$article $articles->findOne(array('_id' => new MongoId('47cc67093475061e3d9536d2')));

?>

Example #2 MongoCollection::findOne() document by some condition.

This example demonstrates how to find a single document in a collection by some condition and limiting the returned fields.

<?php

$users 
$mongo->my_db->users;
$user $users->findOne(array('username' => 'jwage'), array('password'));
print_r($user);

?>

以上例程的输出类似于:

Array
(
    [_id] => MongoId Object
        (
        )

    [password] => test
)

Notice how even though the document does have a username field, we limited the results to only contain the password field.

参见


MongoCollection
在线手册:中文 英文
PHP手册
PHP手册 - N: Querys this collection, returning a single element

用户评论:

ejs5 at g2link dot com (10-Dec-2010 04:30)

Special characters seem to be automatically escaped by the Mongo driver.

<?php

$db
= $mongo->my_db->wireless_service_providers;
$provider = $db->findOne(array("name" => "AT&T"), array('_id' => 1));
print_r($provider);

?>

if the value is stored as "AT&T" in the document you will get

Array([_id]=>)

but if the value is stored as "AT&AMP;T" it will return

Array ( [_id] => MongoId Object ( ) )

dominik at dokdok dot com (30-Sep-2010 07:44)

There is also a notation to retrieve all fields, but the specified ones

<?php

$users
= $mongo->my_db->users;
$user = $users->findOne(array('username' => 'jwage'), array('password' => 0));
print_r($user);

?>

Will return all fields of the user, but the password field.