개발자 Q&A

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

2025.06.27 03:30

MongoDBBSONDocument::has 사용에 관해 질문

목록
  • 패스워드보안성애자 21일 전 2025.06.27 03:30
  • 70
    1
제가 MongoDBBSONDocument::has 메서드를 사용하여 필드의 존재 여부를 확인하려고 합니다. 하지만 이 메서드의 동작 방식에 대해 이해가 잘 안갑니다.

제가 사용하는 코드는 다음과 같습니다.

php

$bsonDocument = new MongoDBBSONDocument([

    'name' => 'John',

    'age' => 30,

]);



if ($bsonDocument->has('name')) {

    echo "name 필드가 존재합니다.";

} else {

    echo "name 필드가 존재하지 않습니다.";

}



이 코드는 잘 작동하더라도, 'age' 필드는 존재하지 않는데도 'age 필드가 존재합니다.'라는 메시지가 출력되는 것을 볼 수 있습니다. 이 메서드는 필드의 존재 여부를 정확하게 확인하는 것인 것인지 궁금합니다.

MongoDBBSONDocument::has 메서드의 동작 방식에 대해 설명해 주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  21일 전



    MongoDBBSONDocument::has 메서드는 필드의 존재 여부를 확인할 때, 필드의 존재 여부를 확인하는 것이 아니라, 필드의 값이 null이 아닌지 확인합니다.

    즉, 'age' 필드는 존재하지만 null로 초기화되어 있기 때문에 has 메서드는 true를 반환합니다.

    만약 'age' 필드가 존재하지 않으면, has 메서드는 false를 반환합니다.

    따라서, MongoDBBSONDocument::has 메서드는 필드의 존재 여부를 정확하게 확인하는 것이 아니라, 필드의 값이 null이 아닌지 확인하는 메서드입니다.

    만약 필드의 존재 여부를 정확하게 확인하고 싶다면, isset 메서드를 사용하는 것이 좋습니다.

    예를 들어, 다음과 같이 코드를 작성할 수 있습니다.

    php
    
    $bsonDocument = new MongoDB\BSON\Document([ 
    
        'name' => 'John', 
    
        'age' => 30, 
    
    ]); 
    
    
    
    if (isset($bsonDocument->name)) { 
    
        echo "name 필드가 존재합니다."; 
    
    } else { 
    
        echo "name 필드가 존재하지 않습니다."; 
    
    }
    
    


    이 코드는 'age' 필드가 존재하지 않더라도 'age 필드가 존재하지 않습니다.'라는 메시지를 출력합니다.

    2025-06-27 03:31

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

검색

게시물 검색