티스토리 뷰

[몽고DB 접속]

$m = new MongoClient('mongodb://[IP주소]:[포트번호]', array("username"=>"[사용자계정]", "password"=>"[패스워드]", "db"=>"[권한있는데이터베이스]");


-> 내 컴퓨터가 아닌 별도의 서버에 설치한 몽고DB에는 위와 같은 방법으로 접속할 수 있다.

    따로 몽고DB가 설치된 경로를 include 또는 require 하지 않아도 된다.

-> 구글링을 해보면 접속할 때 new Mongo() 를 이용해서 하는 방법도 나오는데, 현재(2017.02.11)는 그렇게 하면 오류 뙇!!

    MongoClient 를 이용하라고 친절하게 오류가 뜬다.

    * php 에서 오류를 확인하는 방법?

      ini_set('display_errors', '1');      php 시작 부분에 이렇게 적어준다. (물론 <? 뒤에)


[컬렉션 선택]

$collection = $m->selectCollection("[사용할 데이터베이스]", "[컬렉션명]");


-> 어떤 컬렉션을 이용할지 선택해야 한다. 처음엔 뭣도 모르고 $collection = $m->[컬렉션명]; 했더니 오류 뙇!!(곧 설명)

-> 컬렉션은 미리 생성하지 않아도 된다. 존재하지 않으면 알아서 생성해주니까!

* 컬렉션은 MySQL이나 Oracle의 테이블 같은 개념*


[데이터 삽입]

$document = array("title" => "Calvin and Hobbes", "author" => "Bill Watterson"[, "[key]" => "[value]"]);

$collection->insert($document);


-> NoSQL 인 몽고DB의 가장 큰 특징!! 쿼리가 없고 JSON 데이터를 입력하듯 키-값 형식으로 데이터를 삽입한다.

-> 앞서 $collection = $m->[컬렉션명]; 이렇게 하니 $collection->insert($document); 이 부분에서 오류가 났다.

    정의되어 있지 않은 insert() 함수라고. MongoCollection 의 php 레퍼런스에서는 분명히 나오는데 뭐가 문제인지 몰랐다.

    $collection 값을 지정하는 곳부터 살펴보기로. $m 은 MongoClient 의 객체이니 그쪽 레퍼런스를 보았다.

public MongoCollection MongoClient::selectCollection ( string $db , string $collection )

   리턴값이 MongoCollection 인 함수를 찾아 컬렉션 객체부터 제대로 생성해 오류를 수정했다.


[데이터 출력]

$cursor = $collection->find();

foreach ($cursor as $doc) {

    echo $doc["title"]."<br>";

}


-> 컬렉션의 모든 값을 찾는다!!

    SELECT * FROM books;        쿼리라면 이렇게 쓰겠죠.

-> find() 안에 조건을 주어 WHERE 절의 기능을 할 수도 있다. (나중에 해봐야지)

-> echo $cursor;  이러면 오류 뙇!! 오브젝트 객체이기 때문에

    제일 간단하게는 print_r($cursor);  아니면 var_dump(iterator_to_array($cursor));  이렇게 결과값 볼 수 있다.

-> foreach 구문으로 결과값을 한 줄씩 읽고, $doc["title"] 로 원하는 키의 값을 출력한다.


[데이터 검색]

$find = array("author" => new MongoRegex("/^Bill/i"));

$cursor = $collection->find($find);


-> 쿼리의 LIKE절은 MongoRegex 객체를 이용한다. author 키의 값이 Bill 로 시작하는 도큐먼트를 검색!

'몽고DB' 카테고리의 다른 글

로보몽고에서 컬렉션 인덱스 삭제_ dropIndexes()  (0) 2019.04.01
[몽고DB] 참고사이트  (0) 2017.02.11
댓글