0

다음 필드가 MongoId로 id 필드가있는 yml 매핑에 있습니다. 데이터를 처리하기 위해 집계 빌더를 사용해야하는 유스 케이스가 있습니다. 결과를 사용할 수있게되면 _id 문서는 몽고드 객체로 반환됩니다.ObjectId를 사용한 Doctrine mongodb-odm 집계 빌더 쿼리

누가 몽고드 대신 문자열을 반환하는 _id 필드를 투영하는 방법을 알고 있습니까? YML에서

문서 매핑 :

UserDocument: 
    fields: 
     _id: 
      id: true 
     username: 
      type: string 

집계 쿼리 :

$ab = $dm->createAggregationBuilder('UserDocument'); 
$ab->project() 
    ->includeFields([ 
     'username', 
    ]); 
$users = $ab->execute(); 

결과 :

{ 
    "_id": [], 
    "username": "user" 
} 

감사

+0

_id 필드가 MongoId 개체로 반환되는 것으로 잘못 생각했습니다. 대신 문자열로 사용하고 싶습니다. 다시 한번 감사드립니다. – Billiam

답변

0

json_encode()이 결과를 보내고 있습니다 가정? 빈 배열로 나타나는 이유는 json_encode가 객체를 직렬화하는 방법 때문입니다.

JMS와 같은 것을 사용하여 출력을 직렬화하지 않을 경우 해당 필드의 유형을 수동으로 강제 변환해야합니다. 가장 간단한 해결책은 캐릭터 라인 버전으로 값을 결과를 반복하고 설정하는 것입니다 : 기본적으로

foreach ($results as &$v) { $v['_id'] = (string) $v['_id']; }

당신이 그것을 제외하지 않는 당신이 _id 필드가 포함 된 $ 프로젝트 연산자를 사용하는 경우.

+0

답변 해 주셔서 감사합니다. id를 문자열로 반환하는 집계 빌더를 만드는 방법을 찾고있었습니다. 더 많은 연구를 한 후에는 현재 몽고 버전을 사용할 방법이 없습니다. – Billiam