While you can create a DBRef object for a GridFS document, you CAN NOT load a document from GridFS using a DBRef.
This is dependent on the driver, not MongoDB.
(PECL mongo >=0.9.0)
Расширение, задающее этот класс, объявлено устаревшим. Вместо него используйте расширение MongoDB. Никакой замены данному классу не предусмотрено.
Концепция ссылок на базу данных, а следовательно и данный класс, являются устаревшими.
Этот класс может быть использован для создания простых связей между объектами разных коллекций.
Основание: Предположим, что нам нужно сослаться на документ из другой коллекции. Самый простой способ - создать специальное поле в текущем документе. Например, если у нас есть коллекции людей и адресов, мы можем создать связь между документом адреса и документом человека:
Пример #1 Связывание документов
<?php
$people = $db->people;
$addresses = $db->addresses;
$myAddress = array("line 1" => "123 Main Street",
"line 2" => null,
"city" => "Springfield",
"state" => "Vermont",
"country" => "USA");
// сохраняем адрес
$addresses->insert($myAddress);
// сохраняем человека со ссылкой на адрес
$me = array("name" => "Fred", "address" => $myAddress['_id']);
$people->insert($me);
?>
Позже мы можем найти адрес человека с помощью запроса в коллекцию адресов с использованием MongoId который мы сохранили в коллекции людей.
Теперь предположим, что мы имеем более общий случай, когда не известно какая коллекция (или даже база данных) содержит указанный документ. MongoDBRef является хорошим выбором в такой ситуации, так как это общий формат, который понимают все драйверы и базы данных.
Если каждый человек имеет список понравившихся вещей и все они находятся в разных коллекциях, таких как: "hobbies", "sports", "books", и т.д., мы можем использовать MongoDBRef для отслеживания того, что и из какой коллекции "лайкнул" человек:
Пример #2 Создание MongoDBRef связи
<?php
$people = $db->selectCollection("people");
// модель поезда в коллекции "hobbies"
$trainRef = MongoDBRef::create("hobbies", $modelTrains['_id']);
// футбол в "sports" коллекции
$soccerRef = MongoDBRef::create("sports", $soccer['_id']);
//теперь мы знаем, какие коллекции элементов в массиве "likes" придут, когда
// мы будем извлекать этот документ
$people->insert(array("name" => "Fred", "likes" => array($trainRef, $soccerRef)));
?>
Ссылки в базе данных можно рассматривать как гиперссылки: он предоставляет уникальный адрес другого документа, но не загружает его автоматически и не переходит по этим ссылкам.
Ссылки в базе данных это обычный ассоциативный массив, не экземплр MongoDBRef, поэтому этот класс немного оличается от других классов типов данных. Этот класс содержит только ститические методы для манипуляции ссылками базы данных.
Базовая документация на MongoDB лежит тут » databases references.
While you can create a DBRef object for a GridFS document, you CAN NOT load a document from GridFS using a DBRef.
This is dependent on the driver, not MongoDB.