티스토리 뷰

WEB2.0/프로그래밍

mongodb 활용 php 기본 예제

나를찾는아이 2013. 7. 29. 14:04
728x90
반응형

mongodb 연결


아무런 인자값을 넣지 않는 경우 localhost를 참조하며


호스트만 입력할 경우 기본 포트 27017 포트가 사용됩니다.


호스트와 포트 모두를 넣어도 됩니다.


auth 모드를 활성화 했다면 추가 파라메터에 계정정보를 넣습니다.


try {
    // $m = new MongoClient();
    $m = new MongoClient('mongodb://호스트명');
    // $m = new MongoClient('mongodb://호스트명', array("username"=>"admin", "password"=>"비밀번호"));
}
catch (MongoException $e){
    echo "error message: ".$e->getMessage()."\n";
    echo "error code: ".$e->getCode()."\n";
}



데이터베이스 선택


데이터베이스가 생성되어 있지 않은 경우 자동으로 생성합니다.


$db = $m->comedy;



콜렉션 선택


콜렉션은 RDB에서의 테이블과 같은 개념으로 이해하시면 됩니다.


마찬가지로 별도의 명령어 없이 자동으로 생성됩니다.



$collection = $db->cartoons;



데이터베이스와 콜렉션을 연이어 선택할 수 있습니다.


$collection = $connection->baz->foobar;




데이터 입력


어떠한 형태의 데이터든 입력이 가능합니다.

$document = array( "title" => "Calvin and Hobbes", "author" => "Bill Watterson" );
$collection->insert($document);


$document = array( "title" => "XKCD", "online" => true );
$collection->insert($document);


물론 nosql 답게 스키마가 없으니 마음대로 데이터를 넣으면 됩니다.




콜렉션의 도큐먼트 갯수 가져오기

echo $collection->count();




콜렉션의 도큐먼트 가져오기


콜렉션의 모든 도큐먼트 가져오기


$cursor = $collection->find();

foreach ($cursor as $document) {
    echo $document["title"] . "<br />";
}



조건문은 find 안에 파라메터로 다음과 같이


// 조건문 title 값이 XKCD인 도큐먼트만
$query = array( 'title' => 'XKCD' );
$cursor = $collection->find( $query );

while ( $cursor->hasNext() )
{
    var_dump( $cursor->getNext() );
}



값의 크기 비교는 이렇게 합니다.


i 값이 50보다 작은것을 찾고자 하는 경우 $gt 를 이용합니다.


배열에 넣을때 작은따옴표를 써야하는것에 주의하세요.


큰 따옴표를 쓰는 경우 이스케이프를 해주어야 합니다.



$query = array( "i" => array( '$gt' => 50 ) );
// 조건 20 < i <=30 일경우
// $query = array( 'i' => array( '$gt' => 20, "\$lte" => 30 ) );
$cursor = $collection->find( $query );

while ( $cursor->hasNext() )
{
    var_dump( $cursor->getNext() );
}



var_dump로 도큐먼트 정보를 보면 내가 넣지 않은 _id 필드값을 확인할수 있습니다.


이것은 mongodb가 자동으로 생성하여 붙이는 pk로 이해하면 됩니다.



콜렉션의 매칭된 도큐먼트 갯수


echo $cursor->count()



리턴 갯수 조절


mysql의 limit와 같은 역할이죠.


$cursor->skip(3);
$cursor->limit(5);



정렬


mongodb는 1이 ascending정렬, -1이 descending 정렬입니다.


두개의 조건으로 정렬도 가능합니다.



$cursor->sort(array('x'=>1));
$cursor->sort(array('date'=>1,'age'=>-1));




데이터 하나만 가져오기


매칭되는 도큐먼트가 하나만 있거나 한개의 결과값만 필요할때 사용합니다.


$document = $collection->findOne();


_id값으로 특정 도큐먼트를 가져올 수 있습니다.


$document = $articles->findOne(array('_id' => new MongoId('47cc67093475061e3d9536d2')));


두번째 인자값을 통해 원하는 특정 필드만 출력할수 있습니다.


$document = $users->findOne(array('username' => 'jwage'), array('password'));




인덱스 설정


특정 필드에 인덱스를 설정할 수 있습니다.


정렬과 마찬가지로 1이 ascending정렬, -1이 descending 정렬입니다.


$collection->ensureIndex( array( "i" => 1 ) );  // create index on "i"
$collection->ensureIndex( array( "i" => -1, "j" => 1 ) );  // index on "i" descending, "j" ascending




참고 http://www.php.net/manual/en/mongo.tutorial.php

728x90
반응형

'WEB2.0 > 프로그래밍' 카테고리의 다른 글

mysql 의 데이터 csv로 export 하기  (0) 2013.09.16
php memcached 활용  (1) 2013.07.31
php 에 mongodb 드라이버 설치  (0) 2013.07.26
centos에 mongodb 설치하기  (0) 2013.07.25
wget의 다양한 옵션  (0) 2013.07.23
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함