php 에서 mongodb 데이터 읽기, 쓰기, 갱신, 삭제하기 (select, insert, update, delete)

프로그래밍/PHP|2020. 5. 20. 16:53
반응형

아래 코드는 PHP 7.2 에서 MongoDB 4.4.0 에서 확인 되었습니다.


참조 : http://zetcode.com/db/mongodbphp/

> MongoDB 설치에서 부터 PHP 연동을 위한 모듈 설치, 설정.

    그리고 데이터 입출력에 관한 간단한 소스가 예제로 잘 작성 되어 있습니다.



1. Insert


<?php


try {

    $mng = new MongoDB\Driver\Manager("mongodb://127.0.0.1:27017");

    $bulk = new MongoDB\Driver\BulkWrite;

    $doc = ['_id' => new MongoDB\BSON\ObjectID, 'Name' => "CDH", 'City' => "Seoul"];

    $bulk->insert($doc);

    $mng->executeBulkWrite('site.member', $bulk);


} catch (MongoDB\Driver\Exception\Exception $e) {

    $filename = basename(__FILE__);

    echo "The $filename script has experienced an error.\n";

    echo "It failed with the following exception:\n";

    echo "Exception:", $e->getMessage(), "\n";

    echo "In file:", $e->getFile(), "\n";

    echo "On line:", $e->getLine(), "\n";

}


?> 


* site 는 컬렉션 명, member 는 도큐멘트 명입니다.



2. Select


<?php


try {

    $mng = new MongoDB\Driver\Manager("mongodb://127.0.0.1:27017");

    $filter = [ 'Name' => 'CDH' ]; // 조건 (완전 일치)

    //$filter = [ 'Name' => array('$regex' => 'C') ]; // 조건 (포함)

    $query = new MongoDB\Driver\Query($filter);

    //$query = new MongoDB\Driver\Query([]); // 조건 없이 전체 조회


    $rows = $mng->executeQuery("site.member", $query);

    foreach ($rows as $row) { // 데이터가 있는대로 반복해서 가져온다.

            echo "이름은 $row->Name 이고, 도시는 $row->City 입니다.";

    }

} catch ......


?>


* 생략된 catch 부분은 Insert 예제와 동일

* 개수 제한 또는 정렬 필요시 filter 아래에 options 추가

$options = [

            'limit' => 50,

            'sort' => ['Date' => -1]

    ];

$query = new MongoDB\Driver\Query($filter, $options);



3. Update


<?php


try {

    $mng = new MongoDB\Driver\Manager("mongodb://127.0.0.1:27017");

    //$filter = [ 'Name' => "CDH", 'City' => "Seoul" ];

    $bulk = new MongoDB\Driver\BulkWrite;

    $bulk->update(

            ['Name' => "CDH", 'City' => "Seoul"], // 조건 (이렇게 직접 입력하거나 위의 $filter 활용)

            ['$set' => ['Name' => "JJE", 'City' => "Busan"]], // 변경값

            ['multi' => True] // 여러개 동시 수정할 경우

    );

    $mng->executeBulkWrite('site.member', $bulk);

} catch ......


?>


* 생략된 catch 부분은 Insert 예제와 동일



4. Delete


<?php


try {

    $mng = new MongoDB\Driver\Manager("mongodb://127.0.0.1:27017");

    $bulk = new MongoDB\Driver\BulkWrite;

    $bulk->delete(['Name' => "CDH"], ['City' => "Seoul"]); // 조건

    $mng->executeBulkWrite('site.member', $bulk);

} catch ......


?>


* 생략된 catch 부분은 Insert 예제와 동일


반응형

댓글()