MongoDB의 특수 인덱스인 _id는 MongoDB 내부에선 ObjectId() 형태로 저장되어 있음.

이게 PHP에선 MongoId 라는 클래스로 매핑되어 있는데, 이를 이용하여 query 하는 예제.


// MongoDB 연결
$m = new MongoClient('mongodb://USER_ID:PASSWD@HOSTNAME:PORT');

// 아무거나 하나 가져오기
$doc = $m->DB_NAME->COL_NAME->findOne();

// _id는 MongoId 객체로 들어있음. _id hash key를 뽑아내려면 그냥 string 타입캐스트가 제일 속편함.
// MongoId 클래스의 __toString()이 저 hash key를 반환함.
$_id = (string)$doc['_id'];

// 게시물 링크를 만든다고 치자.
$read_link = 'http://hostname.com/board/read.php?id='.$_id;

// 저 링크를 타고 들어온 read.php 에서 게시물을 query 한다고 가정하면 아래처럼.
$_id = $_GET['id'];

$q = array(
    '_id' => new MongoId($_id)
);
$doc = $m->DB_NAME->COL_NAME->findOne($q);




_id는 자동으로 항상 인덱스가 걸려있고 unique 하므로, 따로 키를 만들고 auto_increment 설정을 하고 하는 것보다 차라리 편한 듯.

(게다가 timestamp도 가져올 수 있음!)




[참조]

http://www.php.net/mongoid







Posted by bloodguy
,