2016-06-24 5 views
0

컬렉션 3 필드에 컬렉션이 있습니다. 이 필드는 arrayIndex 형식입니다. 다음과 같은 컬렉션 샘플MongoDB를 사용하여 여러 필드의 평균을 계산하는 방법은 무엇입니까?

{ 
     "_id" : ObjectId("576165f58d8b8f39458b456c"), 
     "EventTS" : ISODate("2016-06-07T03:30:00.000+0000"), 
     "PowerStatus" : [ 
      NumberInt(1), 
      NumberInt(1), 
      null, 
      NumberInt(1), 
      null 
     ], 
     "TempStatus" : [ 
      NumberInt(1), 
      null, 
      NumberInt(1), 
      null, 
      null 
     ], 
     "UPSStatus" : [ 
      NumberInt(1), 
      null, 
      NumberInt(1) 
     ] 
    } 

이것은 컬렉션 1 레코드의 샘플입니다. 기본적으로 PowerStatus, TempStatus 및 UPSStatus는 배열 인덱스 형식입니다. 이 필드에는 1 또는 null 값만 저장됩니다. 첫째로 나는 PowerStatus, TempStatus 및 UPSStatus의 평균을 계산해야한다는 사실을 알게 된 개인 1 명을 계산해야합니다. 그리고 PowerStatus의 수집 평균 77 년 전 출력처럼 원하는 때 쿼리 그 후 excute에

{ 
    "result": [ 
    { 
     "PowerStatus": 77, 
     "TempStatus": 12, 
     "UPSStatus": 11 
    } 
    ] 
} 

아래와 같이 나는 TempStatus가 12이 형식으로 결과를 얻기 위해 노력하고 UPSStatus 어떻게 계산하는 날을 제안하십시오 (11)입니다 평균 3 건?

+0

가능한 복제 (http://stackoverflow.com/questions/23323515/mongo-average-aggregation-query-with-no-group는) –

+0

나는 생각이 다르다 먼저 내가 평균을 계산해야 PowerStatus, TempStatus, UPSStatus 필드에서 1을 계산해야합니다. @AliDehghani –

+1

사진이 다소 오해의 소지가 있습니다 (적어도 저에게는). 해당 스키마 텍스트 또는 샘플 문서로 바꾸십시오 –

답변

0

이에 대한 집계 프레임 워크를 사용할 수 있습니다.

데이터 세트가 없으므로 결과를 해결할 수는 없지만 ypur 문제에 대한 제안 된 솔루션은 아래를 참조하십시오.

db.dhsari.aggregate([{ 
      $unwind : "$PowerStatus" 
     }, { 
      $unwind : "$TempStatus" 
     }, { 
      $unwind : "$UPSStatus" 
     }, { 
      $group : { 
       _id : null, 
       PowerStatus : { 
        $avg : "$PowerStatus" 
       }, 
       TempStatus : { 
        $avg : "$TempStatus" 
       }, 
       UPSStatus : { 
        $avg : "$UPSStatus" 
       }, 
      } 
     }, { 
      $project : { 
       _id : 0, 
       result : [{ 
         "PowerStatus" : "$PowerStatus", 
         "TempStatus" : "$TempStatus", 
         "UPSStatus" : "$UPSStatus" 
        } 
       ] 

      } 
     } 

    ]) 
는 [어떤 그룹과 몽고 평균 집계 쿼리]의
관련 문제