5 글 보임 - 1 에서 5 까지 (총 5 중에서)
-
글쓴이글
-
2023년 9월 4일 10:58 #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)을 어떻게 정수형 값으로 바꾸는 방법이 있을까요?
2023년 9월 4일 15:56 #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가 생기던데 이것은 무엇인가요?
추후에 필요하다면 이것을 가져다가 쓸수도 있는 것인가요?
2023년 9월 4일 20:13 #96905
codingapple키 마스터$sum : '$SL_WSL' 만 써봅시다 사이트에 있는 그건 aggregation 문법 테스트해보는 공간일걸요
-
글쓴이글
5 글 보임 - 1 에서 5 까지 (총 5 중에서)
- 답변은 로그인 후 가능합니다.