MongoDB+Laravel+Window 연동

1. mongoDB 설치

2. 몽고DB php모듈 설치(php_mongodb.dll)

- 현재 사용하는 php 버전과 thread safe 사용 여부를 파악( phpinfo() 함수를 이용하여 확인 할 수 있다.)

  • thread safe : 어떤 함수변수, 혹은 객체가 여러 스레드로부터 동시에 접근이 이루어져도 프로그램의 실행에 문제가 없음을 뜻한다. 
    보다 엄밀하게는 하나의 함수가 한 스레드로부터 호출되어 실행 중일 때, 다른 스레드가 그 함수를 호출하여 동시에 함께 실행되더라도 
    각 스레드에서의 함수의 수행 결과가 올바로 나오는 것으로 정의한다.

3. https://pecl.php.net/package/mongodb/1.5.2/windows 경로로 가서 본인에게 맞는 php_mongodb.dll 파일을 다운로드

  • > 해당 파일을 php가 설치된 파일로 복사 (위 그림 configuration file 의 php경로에 ext폴더에 복사 )
    -> php.ini 파일에 extension=mongodb 추가

4. composer.json에 jenssegers/mongodb 패키지 설치(3.3.0 버전이 laravel 5.5 버전과 호환

  • d:\project> composer require jessegers/mongdb:³.3.0-alpha

5. .env 및 database.php 설정

.env

MONGO_DB_HOST = "127.0.0.1"
MONGO_DB_PORT = 27017
MONGO_DB_DATABASE = "test"
MONGO_DB_USERNAME =
MONGO_DB_PASSWORD =

database.php

'mongodb' => [
'driver' => 'mongodb',
'host' => env('MONGO_DB_HOST', 'localhost'),
'port' => env('MONGO_DB_PORT', 27017),
'database' => env('MONGO_DB_DATABASE'),
'username' => env('MONGO_DB_USERNAME'),
'password' => env('MONGO_DB_PASSWORD'),
'options' => []
],

6. provider 에 서비스 등록 (config폴더->app.php)

Jenssegers\Mongodb\MongodbServiceProvider::class,

7. 간단한 sample페이지 작성

7.1 간단한 insert 후 select

// controller method

public function getMongo()
{

//insert
DB::connection("mongodb")
->collection("location")
->insert([
[
'name' => 'seoul',
'num' => "02",
"sigu" =>[
"name"=>["중랑구","동대문구","구로구","강남구","중구"]
]
],
[
'name' => 'gyeonggi',
'num' => "031",
"sigu" =>[
"name"=>["시흥시","성남시","남양주시","양주군","의정부시"]
]
],
[
'name' => 'busan',
'num' => "051",
"sigu"=>[
"name"=> ["동구","서구","남구","북구","중구"]
]
],
]);
//select
dd(
DB::connection("mongodb")
->collection("location")
->where("name","seoul")
->select("num")
->get(),

DB::connection("mongodb")
->collection("location")
->where("name","busan")
->select("sigu.name")
->get()
);


}



//result
Collection {#570 ▼
#items: array:1 [▼
0 => array:2 [▼
"_id" => ObjectId {#569 ▶}
"num" => "02"
]
]
}

Collection {#582 ▼
#items: array:1 [▼
0 => array:2 [▼
"_id" => ObjectId {#581 ▶}
"sigu" => array:1 [▼
"name" => array:5 [▼
0 => "동구"
1 => "서구"
2 => "남구"
3 => "북구"
4 => "중구"
]
]
]
]

7.2 update

//update
DB::connection("mongodb")
->collection("location")
->where("name","seoul")
->update([
'num' => "002",
"namelength" => 5
]);

//select
dd(
DB::connection("mongodb")
->collection("location")
->where("name","seoul")
->select("*")
->get()
);

//result
Collection {#581 ▼
#items: array:1 [▼
0 => array:5 [▼
"_id" => ObjectId {#580 ▶}
"name" => "seoul"
"num" => "002"
"sigu" => array:1 [▶]
"namelength" => 5
]
]
}

7.3 delete

//delete
DB::connection("mongodb")
->collection("location")
->where("name","seoul")
->delete();

//select
dd(
DB::connection("mongodb")
->collection("location")
->where("name","seoul")
->select("*")
->get()
);

//result
Collection {#580 ▼
#items: []

}

참고