• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 Node.js, Express 게시판 Sum을 위해 aggregate했는데 Sum이 안됩니다.

Sum을 위해 aggregate했는데 Sum이 안됩니다.

5 글 보임 - 1 에서 5 까지 (총 5 중에서)
  • 글쓴이
  • #96812

    칼있으마
    참가자
    선생님 안녕하세요
    선생님께 배운걸 토대로 나름 어떤 사람을 평가하는 시스템을 만들고 있습니다. 
    
    다음과 같은 소스를 가지고 만들고 있습니다. 
    
    //==================================================================
    // Collection을 배열로 가져와서
    // Sum을 위한 aggregate한 값을 ToArray로 
    //==================================================================
        // DB의 data를 가져와서 해당 항목1,2,3,4,5와, 데이터1에 실제 값을 입력할것
        Evaluate_Answer.find({people_id : id}).toArray(function(에러, 피플파인드결과){
            if (에러) 
                return 응답.status(400).send({message : '실패했습니다.'});       // 2XX : 요청 성공, 4XX : 잘못된 요청으로 실패, 5XX : 서버의 문제  
            
            console.log('피플파인드결과 : ', 피플파인드결과);
            if (!피플파인드결과)
            {
                console.log('피플파인드결과가 없습니다');
                //return 응답.redirect('/list');
                return 응답.status(400).send({message : '피플파인드결과가 없습니다.'});
            }
             var 평가합계 = [
                {$match : { people_id : id}}, 
                {$group : { _id : id,
                            "name": { "$first": "$people_name" },
                            TOT_SL_WSL : { $sum : '$피플파인드결과.SL_WSL'}, 
                          }}
            ];
                Evaluate_Answer.aggregate(평가합계).toArray(function (에러1, 결과) {
                    //console.log("에러1 : ", 에러1);
                    if (에러1) {
                        return 응답.status(400).send({message : '실패했습니다.'});       // 2XX : 요청 성공, 4XX : 잘못된 요청으로 실패, 5XX : 서버의 문제  
                    }
                        
                    console.log("결과  : ", 결과);
                    
                });       
        });
    //----------------------------------------------------------------------------------------------------------------
    
    
    
    
    참고로 맨 처음 굵은 글씨로 표현된 Console.Log의 값은 아래와 같이 표현 되었습니다. 
    피플파인드결과 :  [
      {
        _id: 64cef900c7b59333dcf14634,
        people_id: 2,
        people_name: '홍길동',
        SL_WSL: '5',
      },
      {
        _id: 64cefad4eca9304aa8ee5ee2,
        people_id: 2,
        people_name: '홍길동',
        SL_WSL: '5',
      },
      {
        _id: 64d9d0371a234236a4b1555d,
        people_id: 2,
        people_name: '홍길동',
        SL_WSL: '2',
      }
    ]
    
    
    그렇다고 했을 때 중간부분의 [평가합계]를 aggregate한 값의 출력이 아래와 같습니다.
    결과 :  [ { _id: 2, name: '홍길동', TOT_SL_WSL: 0 } ]
    제 예상에는 12가 되어야 할 것으로 예상 되는데 왜 0이 나오는 것일까요? 
    만약 해당 값(피플파인드결과.SL_WSL)이 정수형이 아니라 문자열 값이라서 합계되지 않는 거라면 
    가져온 값(피플파인드결과.SL_WSL)을 어떻게 정수형 값으로 바꾸는 방법이 있을까요? 
    
    
    
    		
    	
    #96830

    codingapple
    키 마스터
    문자자료들은 sum 하면 0만 나와서 db에 저장된걸 숫자로 먼저 다 바꿔야할듯요
    #96856

    칼있으마
    참가자
    db의 문자 자료로 된 Document를 다 지우고...
    저장하는 페이지에서도 숫자로 저장 되도록 했습니다. 
    
    
    
    다음과 같이 결과가 나왔는데도
    피플파인드결과 :  [
      {
        _id: 64cef900c7b59333dcf14634,
        people_id: 2,
        people_name: '홍길동',
        SL_WSL: 5,
      },
      {
        _id: 64d9d0371a234236a4b1555d,
        people_id: 2,
        people_name: '홍길동',
        SL_WSL: 1,
      }
    ]
    최종 결과는 아래와 같습니다. 
    
    결과 :  [ { _id: 2, name: '홍길동', TOT_SL_WSL: 0 } ]
    
    
    
    다른 방법이 없을까요?
     
     
     
     
     
    
    
    
    
    그리고 추가 질문입니다.
    몽고DB 아틀라스에 해당 Collection에 Aggregation이라는 탭에 
    2 Documents in the collection 라고 하며
    
    2개의 Document가 생기던데 이것은 무엇인가요?
    추후에 필요하다면 이것을 가져다가 쓸수도 있는 것인가요?
    
    
    
    
    
    
    
    
    		
    	
    #96905

    codingapple
    키 마스터
    $sum : '$SL_WSL' 만 써봅시다
    사이트에 있는 그건 aggregation 문법 테스트해보는 공간일걸요
    #96909

    칼있으마
    참가자
    감사합니다.
    말씀대로 하니까 Sum이 됩니다
    
    
    감사합니다
    
    
5 글 보임 - 1 에서 5 까지 (총 5 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠