개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.04.12 03:11

MongoDBDriverCursor::toArray에 대한 질문

목록
  • Flutter전문가 2일 전 2025.04.12 03:11
  • 25
    1
제가 MongoDBDriverCursor::toArray 메서드를 사용하여 MongoDB에서 데이터를 가져올 때, toArray 메서드가 반환하는 결과에 대한 질문입니다.

내가 사용한 코드는 다음과 같습니다.
php

$cursor = $collection->find();

$data = $cursor->toArray();


toArray 메서드가 반환하는 결과는 Array 형태로 반환되는데, 이 Array의 Key는 '_id'와 'name'이 있습니다.

하지만, toArray 메서드가 반환하는 결과의 Key는 MongoDB의 Collection Field 이름과 일치하지 않습니다.

예를 들어, MongoDB Collection Field 이름은 'id'와 'username'이지만, toArray 메서드가 반환하는 결과의 Key는 '_id'와 'name'이 됩니다.

이러한 현상은 MongoDBDriverCursor::toArray 메서드의 특성에 따른 것인지, 아니면 다른 문제에 의한 것인지 궁금합니다.

혹시 toArray 메서드의 반환 결과의 Key를 Collection Field 이름에 맞게 변경하는 방법이 있는지 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  2일 전



    toArray 메서드는 MongoDB의 Collection Field 이름과 일치하지 않는 키로 반환되는 이유는 MongoDBDriverCursor::toArray 메서드의 특성에 의해 발생하는 것이 아닙니다.

    toArray 메서드는 MongoDB의 Collection Field 이름과 일치하지 않는 키로 반환되는 이유는 MongoDB의 Collection Field 이름이 모두 소문자로 시작되기 때문입니다. MongoDB의 Collection Field 이름은 소문자로 시작되기 때문에 toArray 메서드는 소문자로 시작하는 키를 반환합니다.

    따라서, toArray 메서드의 반환 결과의 Key를 Collection Field 이름에 맞게 변경하려면, MongoDB의 Collection Field 이름을 대문자로 시작하거나, toArray 메서드의 반환 결과의 Key를 Collection Field 이름에 맞게 변경하는 코드를 추가로 작성해야 합니다.

    예를 들어, MongoDB의 Collection Field 이름을 대문자로 시작하는 코드를 추가로 작성하면 다음과 같습니다.

    #hostingforum.kr
    php
    
    $cursor = $collection->find();
    
    $result = array();
    
    foreach ($cursor) {
    
        $result[] = array(
    
            'ID' => $cursor['_id'],
    
            'USERNAME' => $cursor['username']
    
        );
    
    }
    
    


    또는 toArray 메서드의 반환 결과의 Key를 Collection Field 이름에 맞게 변경하는 코드를 추가로 작성하면 다음과 같습니다.

    #hostingforum.kr
    php
    
    $cursor = $collection->find();
    
    $result = array();
    
    foreach ($cursor) {
    
        $result[] = array(
    
            'ID' => $cursor['_id'],
    
            'USERNAME' => $cursor['username']
    
        );
    
    }
    
    $result = array_map(function($item) {
    
        return array_combine(array_map(function($key) {
    
            return str_replace('_', '', strtoupper($key));
    
        }, array_keys($item)), $item);
    
    }, $result);
    
    


    이러한 코드를 추가로 작성하여 toArray 메서드의 반환 결과의 Key를 Collection Field 이름에 맞게 변경할 수 있습니다.

    2025-04-12 03:12

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 11,294건 / 22 페이지

검색

게시물 검색