개발자 Q&A

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

2025.08.03 09:25

CollectionFind::having 사용법에 대한 질문입니다.

목록
  • 도커마법사 16시간 전 2025.08.03 09:25 새글
  • 5
    1
저는 MongoDB의 CollectionFind::having 기능을 사용해 데이터를 필터링하려고 합니다.
하지만 having 조건에 따른 필터링이 제대로 적용되지 않습니다.

저는 having 조건을 다음과 같이 설정했습니다.
javascript

db.collection.find({

  $where: function() {

    return this.field1 + this.field2 > 10;

  }

});


하지만 이 조건이 실제 데이터에 적용되지 않습니다.
이러한 현상을 해결하려면 어떻게 해야 하나요?

또한 having 조건을 사용할 때, 다른 필터링 조건과 함께 사용할 수 있는지 궁금합니다.
예를 들어, having 조건과 $or를 함께 사용할 수 있는지 궁금합니다.

제가 잘못 이해한 부분이 있을까요? 또는 다른 방법을 사용해야 하나요?

    댓글목록

    profile_image
    나우호스팅  16시간 전



    CollectionFind::having 기능은 MongoDB의 aggregation framework를 사용하여 데이터를 필터링할 때 사용됩니다. 하지만 having 조건을 사용하여 데이터를 필터링하는 경우, $where 함수를 사용하는 것이 아니라 aggregation framework를 사용해야 합니다.

    다음은 having 조건을 사용하여 데이터를 필터링하는 예제입니다.

    #hostingforum.kr
    javascript
    
    db.collection.aggregate([
    
      {
    
        $match: {
    
          field1: { $gt: 0 },
    
          field2: { $gt: 0 }
    
        }
    
      },
    
      {
    
        $project: {
    
          result: { $add: ["$field1", "$field2"] }
    
        }
    
      },
    
      {
    
        $match: {
    
          result: { $gt: 10 }
    
        }
    
      }
    
    ]);
    
    


    이 예제에서는 aggregation framework를 사용하여 having 조건을 설정합니다. 첫 번째 match stage에서는 field1과 field2가 양수인 문서를 필터링하고, 두 번째 project stage에서는 field1과 field2를 더하여 result 필드를 생성합니다. 마지막 match stage에서는 result 필드가 10보다 큰 문서를 필터링합니다.

    having 조건과 다른 필터링 조건을 함께 사용할 수 있습니다. 예를 들어, having 조건과 $or를 함께 사용할 수 있습니다.

    #hostingforum.kr
    javascript
    
    db.collection.aggregate([
    
      {
    
        $match: {
    
          $or: [
    
            { field1: { $gt: 0 }, field2: { $gt: 0 } },
    
            { field3: { $gt: 0 }, field4: { $gt: 0 } }
    
          ]
    
        }
    
      },
    
      {
    
        $project: {
    
          result: { $add: ["$field1", "$field2"] }
    
        }
    
      },
    
      {
    
        $match: {
    
          result: { $gt: 10 }
    
        }
    
      }
    
    ]);
    
    


    이 예제에서는 having 조건과 $or를 함께 사용하여 field1과 field2가 양수인 문서 또는 field3과 field4가 양수인 문서를 필터링하고, having 조건을 적용합니다.

    제가 잘못 이해한 부분이 없으며, 다른 방법을 사용해야 할 필요는 없습니다. MongoDB의 aggregation framework를 사용하여 having 조건을 설정하는 것이 올바른 방법입니다.

    2025-08-03 09:26

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

검색

게시물 검색