[MONGODB] MongoDB를 집계 프레임 워크 | 여러 값을 통해 그룹?
MONGODBMongoDB를 집계 프레임 워크 | 여러 값을 통해 그룹?
내가 좋아하는 조금 보일 것이다 SQL에서 무엇을 실행하여 MongoDB의 집계 프레임 워크를 사용하고 싶습니다 :
SELECT SUM(A), B, C from myTable GROUP BY B, C;
워드 프로세서 상태 :
그러나 실제로 '여러 입력 필드에서 만든 집계 키'불분명입니까?
내 데이터 세트는이 같은 비트입니다 :
[{ "timeStamp" : 1341834988666, "label" : "sharon", "responseCode" : "200", "value" : 10, "success" : "true"},
{ "timeStamp" : 1341834988676, "label" : "paul", "responseCode" : "200", "value" : 60, "success" : "true"},
{ "timeStamp" : 1341834988686, "label" : "paul", "responseCode" : "404", "value" : 15, "success" : "true"},
{ "timeStamp" : 1341834988696, "label" : "sharon", "responseCode" : "200", "value" : 35, "success" : "false"},
{ "timeStamp" : 1341834988166, "label" : "paul", "responseCode" : "200", "value" : 40, "success" : "true"},
{ "timeStamp" : 1341834988266, "label" : "paul", "responseCode" : "404", "value" : 99, "success" : "false"}]
내 쿼리는 다음과 같습니다 :
resultsCollection.aggregate(
{ $match : { testid : testid} },
{ $skip : alreadyRead },
{ $project : {
timeStamp : 1 ,
label : 1,
responseCode : 1 ,
value : 1,
success : 1
}},
{ $group : {
_id : "$label",
max_timeStamp : { $timeStamp : 1 },
count_responseCode : { $sum : 1 },
avg_value : { $sum : "$value" },
count_success : { $sum : 1 }
}},
{ $group : {
?
}}
);
첫 번째 그룹은 이미 너무 많은 데이터 집합을 감소 및 세부 요구 수준이 손실되기 때문에 내 본능이 결과 두 번째 그룹을 통해 파이프 시도했다, 난 당신이 할 수있는 알고 있지만 그것은 작동하지 않습니다.
내가 뭘 원하는 그룹 라벨, 응답 코드와 성공을 사용하고 그 결과에서 값의 합계를 얻을. 이 같은 비트를 보일 것입니다 :
label | code | success | sum_of_values | count
sharon | 200 | true | 10 | 1
sharon | 200 | false | 35 | 1
paul | 200 | true | 100 | 2
paul | 404 | true | 15 | 1
paul | 404 | false | 99 | 1
어디에서 오 개 그룹이 있습니다 :
1. { "timeStamp" : 1341834988666, "label" : "sharon", "responseCode" : "200", "value" : 10, "success" : "true"}
2. { "timeStamp" : 1341834988696, "label" : "sharon", "responseCode" : "200", "value" : 35, "success" : "false"}
3. { "timeStamp" : 1341834988676, "label" : "paul", "responseCode" : "200", "value" : 60, "success" : "true"}
{ "timeStamp" : 1341834988166, "label" : "paul", "responseCode" : "200", "value" : 40, "success" : "true"}
4. { "timeStamp" : 1341834988686, "label" : "paul", "responseCode" : "404", "value" : 15, "success" : "true"}
5. { "timeStamp" : 1341834988266, "label" : "paul", "responseCode" : "404", "value" : 99, "success" : "false"}
해결법
-
==============================
1.좋아, 그럼 해결책은 _id 값에 대한 집계 키를 지정하는 것입니다. 이 여기로 설명되어 있습니다 :
좋아, 그럼 해결책은 _id 값에 대한 집계 키를 지정하는 것입니다. 이 여기로 설명되어 있습니다 :
그러나 실제로 집계 키의 형식을 정의하지 않습니다. 여기에 이전 문서를 읽고 나는 이전 collection.group 방법은 여러 필드를 취할 수와 동일한 구조가 새로운 프레임 워크에 사용되는 것을 보았다.
{성공 : '$ 성공'응답 코드 : '$ 응답 코드', 라벨 : '$ 라벨을'} 그래서, 여러 분야에 걸쳐 그룹에 당신은 _id 사용할 수 있습니다
마찬가지로 :
resultsCollection.aggregate( { $match : { testid : testid} }, { $skip : alreadyRead }, { $project : { timeStamp : 1 , label : 1, responseCode : 1 , value : 1, success : 1 }}, { $group : { _id : { success:'$success', responseCode:'$responseCode', label:'$label'}, max_timeStamp : { $timeStamp : 1 }, count_responseCode : { $sum : 1 }, avg_value : { $sum : "$value" }, count_success : { $sum : 1 } }} );
from https://stackoverflow.com/questions/11418985/mongodb-aggregation-framework-group-over-multiple-values by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] 유성 방법 대 / 거부 규칙은 허용 (0) | 2019.12.14 |
---|---|
[MONGODB] 배열 요소에 의해 MongoDB를 정렬 문서 (0) | 2019.12.14 |
[MONGODB] MongoDB의에서 업데이트 문서의 수를 제한하는 방법 (0) | 2019.12.14 |
[MONGODB] 하나의 문에서 여러 몽고 업데이트 연산자? (0) | 2019.12.14 |
[MONGODB] MongoDB를 - DBREF이 필요하다? (0) | 2019.12.14 |