Types
PHP Manual

Класс MongoDBRef

(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, поэтому этот класс немного оличается от других классов типов данных. Этот класс содержит только ститические методы для манипуляции ссылками базы данных.

Обзор классов

MongoDBRef {
/* Методы */
public static array create ( string $collection , mixed $id [, string $database ] )
public static array get ( MongoDB $db , array $ref )
public static bool isRef ( mixed $ref )
}

Смотрите также

Базовая документация на MongoDB лежит тут » databases references.

Содержание


Types
PHP Manual