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도 가져올 수 있음!)
[참조]
'PHP' 카테고리의 다른 글
[PHP] PHP 스크립트로 비동기/병렬 처리를 통해 멀티 코어 활용하기 (0) | 2015.02.23 |
---|---|
[PHP] 한글 종성유무에 맞는 조사(은/는/이/가/을/를/과/와) 변환 (0) | 2015.02.12 |
[PHP] 클래스 이름 관련 함수들 (functions about class name) (0) | 2014.12.04 |
[PHP] header() 로 redirect 했을 때 HTTP_REFERER가 사라짐. (0) | 2014.10.29 |
[PHP] 에디트플러스에서 다른 IDE처럼 함수정의부분으로 이동하는 기능구현 (EditPlus jump to declaration) (2) | 2014.10.11 |