티스토리 툴바


서비스에 MongoDB를 이용하면서 점점 MongoDB에 쌓이고 있는 데이터들에 대한 통계자료를 뽑아봐야하는 Needs가 지속적으로 발생했다. 그간 쭈욱 있어왔던 통계자료들은 대부분 큰 어려움은 없었다. 하지만 이번에는 Distinct기능을 이용하여 중복되지 않은 KeyList를 얻어오는 요구사항이 발생했고, 이의 해결을 위해 php driver를 활용하여 해결했다.

MongoDB에서 distinct기능을 사용하기 위해서는 command라는 기능을 이용해야 한다. command라는 function에 어떠한 Collection의 어느 Field에 대해서 distinct기능을 사용할 것인지를 명시해주어야 한다. 

아래 예제는 해당 기능을 사용하는 예제를 php로 작성한 것이다.

이 페이지의 기능은 referCollection에서 unique한 refererIdList를 얻어온뒤, 해당 ID를 이용해 page객체를 가져오는 기능이 되겠다.



<?php

require_once ('Config.php');

$testMongo = MongodbUtil::getTestMongoDB();

$referersCol = $testMongo->referers;

$pagesCol = $testMongo->pages;

$referers = $testMongo->command(array("distinct"=>"referers", "key"=>"objId"));


header ("Content-type: text/html;charset=utf8");

?>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

</head>

<br><br>

<table border=1>

        <tr>

                <td><b>Index</b></td>

                <td><b>Name</b></td>

                <td><b>Category</b></td>

                <td><b>Subject</b></td>

        </tr>

<?php
$index = 0;
foreach($referers['values'] as $referer) {
        $index++;

        $cursor = $pagesCol->find(array("_id"=>$referer))->hint(array("_id"=>1))->limit(1);
        $obj = $cursor->getNext();
   
        $pageName = $obj['pageName'];
        $categoryName = $obj['categoryName'];
        $subject = $obj['subject'];
?>

        <tr>

                <td><b><?php echo $index; ?></b></td>

                <td><b><?php echo $pageName; ?></b></td>

                <td><b><?php echo $categoryName; ?></b></td>

                <td><b><?php echo $subject; ?></b></td>

        </tr>

<?php
}
?>
</table>
</html> 



 
저작자 표시 비영리 변경 금지

'Programming > NoSQL' 카테고리의 다른 글

MongoDB PHP Driver에서 distinct기능 활용하기  (0) 2011/08/01
MongoDB 적용사례  (0) 2011/07/13
NoSQL에 대한 고찰  (15) 2010/11/30
MongoDB 성능 테스팅  (2) 2010/11/02
MongoDB Java Driver에서 IN Query사용하기  (0) 2010/11/02
MongoDB Select 예제  (0) 2010/10/26
Posted by Jason Park
이전버튼 1 2 3 4 5 ... 119 이전버튼