개발자 Q&A

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

2025.06.28 12:34

CollectionFind::having 사용법에 대한 질문

목록
  • 프로토콜연구가 23일 전 2025.06.28 12:34 인기
  • 128
    1
제가 현재 MongoDB에서 CollectionFind::having 관련해서 공부를 하고 있습니다.
그중에서 having을 사용하여 필드의 범위를 지정하는 방법에 대한 궁금증이 생겼습니다.
예를 들어, 필드의 범위가 10 ~ 20 사이인 문서를 찾는 방법에 대한 설명을 부탁드립니다.

제가 현재 사용하고 있는 코드는 다음과 같습니다.
ruby

collection = db.collection

result = collection.find(

  { field: { $gt: 10, $lt: 20 } }

)


하지만, 이 코드는 정확하지 않습니다.
그 이유는 field가 숫자 타입이 아닌 경우, $gt와 $lt 연산자가 작동하지 않는다는 점입니다.
이러한 경우, having을 사용하여 필드의 범위를 지정할 수 있는 방법을 알고 싶습니다.

혹시 having을 사용하여 필드의 범위를 지정할 수 있는 방법을 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  23일 전



    `Collection#find` 메서드는 MongoDB의 쿼리 연산자 중 하나인 `$gt`와 `$lt`를 사용하여 필드의 범위를 지정할 수 있습니다. 하지만, 이러한 연산자는 숫자 타입의 필드에만 작동합니다.

    `having` 메서드는 MongoDB의 쿼리 연산자 중 하나입니다. 하지만, Ruby의 Mongoid 라이브러리는 `having` 메서드를 지원하지 않습니다. 대신에, `where` 메서드를 사용하여 필드의 범위를 지정할 수 있습니다.

    다음은 필드의 범위가 10 ~ 20 사이인 문서를 찾는 예제입니다.

    #hostingforum.kr
    ruby
    
    collection = db.collection
    
    result = collection.find(
    
      { field: { $gte: 10, $lte: 20 } }
    
    )
    
    


    위의 예제에서 `$gte` 연산자는 필드의 값이 10 이상인 경우를 찾고, `$lte` 연산자는 필드의 값이 20 이하인 경우를 찾습니다.

    또한, `where` 메서드를 사용하여 필드의 범위를 지정할 수도 있습니다.

    #hostingforum.kr
    ruby
    
    collection = db.collection
    
    result = collection.where(field: 10..20)
    
    


    위의 예제에서 `10..20`은 10 이상 20 이하인 범위를 지정합니다.

    2025-06-28 12:35

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

검색

게시물 검색