티스토리 뷰
[몽고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 |