티스토리 뷰

dev/php

Mongodb :: createDBRef, getDBRef

altvirus 2011. 11. 1. 18:15
1. 의도
어떤 도큐먼트 하나를 참조하기 위해,  컬렉션 이름과 ObjectId 두개로 이루어진 하나의 도큐먼드를 생성하고, 불러온다.(같은 디비일때 얘기)



2. 레퍼런스 생성하기

$c_movie =$db->selectCollection('movie');

$heat = $c_movie->findOne(array('movie_id'=>1));

$heat_ref = $c_movie->createDBRef($heat);

$db->selectCollection('fav')->insert(array('fav'=>$heat_ref));

 ==> movie 컬렉션에서 일련번호 1번인 도큐먼트 얻어와서($heat), 이에 대한 레퍼런스를 만들고($heat_ref), fav 컬렉션에 저장한다.



3. 레퍼런스의 내용 가져오기

$c_fav = $db->selectCollection('fav');

$ref = $c_fav->findOne();

$r = $c_fav->getDBRef($ref['fav']);

print_r($r); 

==> 레퍼런스 값을 가져와서($ref), 내용을 추출한다.($r).  사실 레퍼런스 내용 가져오는 부분에서는 $c_fav는 동일 디비에 있기만 하면 아무 컬렉션이나 상관없겠다. 왜냐하면 $ref안에 컬렉션 이름이랑 도큐먼드 아이디가 들어있으니까 머... 컬렉션 타입이기만 하면 되겠다.


 
※ 그냥 한번 내부를 알기 위한 테스트 ㅋㅋ

$ref = array('$ref'=>'movie', '$id'=> new MongoId('4eaf90e88c9655f372000000'));

$r = $c_fav->getDBRef($ref);

print_r($r);




'dev > php' 카테고리의 다른 글

인스타그램 Feed 가져오기  (0) 2015.04.08
PHP MySQLi Database Class  (1) 2015.02.16
mail()함수를 이용하여 UTF-8 문서를 안전하게 보내는 방법  (0) 2011.05.27
트위터 글쓰기  (0) 2011.05.03
ARRAY to XML  (2) 2011.03.25
공지사항