2013-08-28 4 views
4

을 계산하는 방법을 나는 MongoDB를 인스턴스에 저장되어 다음과 같은 액세스 로그,이 :MongoDB를 - 백분위

Time       Service     Latency 
[27/08/2013:11:19:22 +0000] "POST Service A HTTP/1.1" 403 
[27/08/2013:11:19:24 +0000] "POST Service B HTTP/1.1" 1022 
[27/08/2013:11:22:10 +0000] "POST Service A HTTP/1.1" 455 

백분위 수를 계산하기 위해 오라클에 PERCENTILE_DISC 같은 분석 기능이 있습니까를? 일정 기간 동안 calcualte 대기 시간 백분위 수를보고 싶습니다.

답변

5

백분위 수를 계산하는 고유 한 방법이없는 것처럼 보이지만 몇 가지 집계 연산자를 결합하면 동일한 결과를 얻을 수 있습니다.

db.items.aggregate([ 
     {'$group': { 
      '_id': { 
       'league': '$league', 
       'base': '$base', 
       'type': '$type' 
      }, 
      'value': {'$push': '$chaosequiv'} 
     }}, 
     {'$unwind': '$value'}, 
     {'$sort': {'value': 1}}, 
     {'$group': {'_id': '$_id', 'value': {'$push': '$value'}}}, 
     {'$project': { 
      '_id': 1, 
      'value': {'$arrayElemAt': ['$value', {'$floor': {'$multiply': [0.25, {'$size': '$value'}]}}]} 
     }} 
    ], allowDiskUse=True) 

주 그래서 이것이 하나의 필드에 대해 필요 이상으로 복잡 할 수있는 첫 번째 그룹의 3 개 필드에 그룹에 필요한 문제에 대한 pymongo에 내 원래의 코드를 썼다. 나는이 질문에 특정한 해결책을 쓸 것이나 나는 충분한 구체적인 정보가 있다고 생각하지 않는다.