TIP게시판

제목 PHP MongoDB 드라이버 이용시 Object ID 가져오기
글쓴이 전상민 작성시각 2016/05/20 17:44:43
댓글 : 1 추천 : 1 스크랩 : 0 조회수 : 17266   RSS

PHP MongoDB 드라이버로 Collection을 조회하면 Object로 데이터를 불러옵니다.

전 Array로 사용하고 싶어서 Obejct 를 Array로 변환하는 함수를 만들고자 여러 방법으로 접근해 봤으나

_id (MongoDB Object ID) 멤버 변수는 항상 null 로 나오더군요.

Object 데이터를 출력해보면 아래와 같은 형태입니다.

var_dump($object);

object(MongoDB\Model\BSONDocument)#36 (1) {

    ["storage":"ArrayObject":private]=>  array(8) {

        ["_id"]=>

            object(MongoDB\BSON\ObjectID)#33 (1) {

                ["oid"]=> string(24) "573e69e78fccd968aa066611"

        }

        ["dummy"]=> string(5) "mongo"

    }

}

MongoDB 드라이버 자체 버그인가 싶어서 검색해보니 저와 같은 경험을 한 글들을 찾을 수 있었는데

딱히 명확한 해결 방법을 찾지 못한 것 같아 보입니다.

http://stackoverflow.com/questions/11378029/get-objectid-mongodb-via-php

http://stackoverflow.com/questions/25715085/getting-mongoid-from-php-object-returns-null

http://stackoverflow.com/questions/7861332/how-do-you-get-the-string-value-of-a-mongoid-using-php

http://stackoverflow.com/questions/8106517/mongodb-objectid-to-string

 

 

드라이버 소스를 까보고 검색해보니 BSON 이라는 클래스가 있고

아래 두 함수를 이용하면 될 것처럼 보여서 시도했고 성공했습니다.

http://php.net/manual/en/function.mongodb.bson-fromphp.php

http://php.net/manual/en/function.mongodb.bson-tojson.php

 


$bson = \MongoDB\BSON\fromPHP($object);

$json = \MongoDB\BSON\toJSON($bson);

$result = json_decode($json, true);

var_dump($result);

 

전 이걸 찾느라 오후를 통쨰로 날렸지만 다른분들께 도움이 될까 싶어 공유합니다.

http://php.net/manual/en/class.mongoid.php#119356

 다음글 폼 검증 에러메시지 조사 처리하기 (7)
 이전글 [수정] POST 값 전체를 간단히 검증을 하고 vie... (4)

댓글

한대승(불의회상) / 2016/05/23 13:51:39 / 추천 0

예전에 몽고DB 사용시 원인을 몰라 헤매이던 기억이.... ^^

좋은 정보 감사 합니다.