Поиск документов с помощью MongoCollection::findOne()
Чтобы показать, что документ, который мы вставили на предыдущем шаге, хранится в базе данных, мы можем выполнить простую операцию MongoCollection::findOne(), чтобы получить один документ из коллекции. Этот метод полезен, когда существует только один документ, соответствующий запросу, или вас интересует только один результат.
<?php
$connection = new MongoClient();
$collection = $connection->database->collectionName;
$document = $collection->findOne();
var_dump( $document );
?>
Результат выполнения данного примера:
array(6) {
["_id"]=>
object(MongoId)#8 (1) {
["$id"]=>
string(24) "4e2995576803fab768000000"
}
["name"]=>
string(7) "MongoDB"
["type"]=>
string(8) "database"
["count"]=>
int(1)
["info"]=>
array(2) {
["x"]=>
int(203)
["y"]=>
int(102)
}
["versions"]=>
array(3) {
[0]=>
string(5) "0.9.7"
[1]=>
string(5) "0.9.8"
[2]=>
string(5) "0.9.9"
}
}
Обратите внимание, что есть поле _id,
которое было автоматически добавлено в ваш документ. _id - это поле
"первичный ключ". Если в вашем документе он не указан, драйвер добавит его автоматически.
Если вы укажете свое собственное поле _id,
оно должно быть уникальным для коллекции. Смотрите пример здесь:
<?php
$connection = new MongoClient();
$db = $connection->database;
$db->foo->insert(array("_id" => 1));
// это выдаст исключение
$db->foo->insert(array("_id" => 1));
// здесь все хорошо, так как это другая коллекция
$db->bar->insert(array("_id" => 1));
?>
По умолчанию драйвер гарантирует, что сервер подтвердил запись перед возвратом.
Вы можете при желании отключить это поведение,
передав array("w" => 0) в качестве второго аргумента.
Это означает, что драйвер не должен ждать,
пока база данных подтвердит запись,
и не вызовет исключение дубликата _id.
Смотрите также
MongoCollection::findOne() для получения дополнительной информации о поиске данных.
MongoId более подробно описывает уникальные идентификаторы.
Раздел записи описывает более детальную запись, а в главе Гарантии записи подробно рассматриваются различные параметры записи.