2014-04-06 3 views
0

임 내가 결과를 아래에 설명하는 배열을 채우기 위해 노력 쉘 채우기 위해 노력하고 출력이 4 개 null 요소몽고의 배열

저에게 배열을 제공
"result" : [ 
      { 
        "maxTemp" : 83, 
        "group_id" : "Florida" 
      }, 
      { 
        "maxTemp" : 57, 
        "group_id" : "New Mexico" 
      }, 
      { 
        "maxTemp" : 81, 
        "group_id" : "California" 
      }, 
      { 
        "maxTemp" : 57, 
        "group_id" : "Vermont" 
      } 
    ], 
    "ok" : 1 

코드는

db.data.aggregate( 
      { 
      $group: { 
       _id: "$State" 
       , maxTemp: { $max :"$Temperature"} 
      } 
      }, 
      { $project: { 
       _id: 0, 
       group_id:"$_id", 
       maxTemp: "$maxTemp" 
      }} 
     ).result.forEach(function(match) { 
      results.push(db.data.findOne(match)); 
     }); 

입니다 그러나 결과는이 결과를 준다

> results 
[ null, null, null, null ] 

나는 결과를 채우기 위해 무엇을 할 수 있냐?

+2

나는이 질문을 mongodb 관리 코스에서 기억합니다. 그 과정에서 묻는 질문이나 집계 프레임 워크를 사용하지만 둘을 혼합하지 말고 셸에서 전체적으로 수행하는 것이 좋습니다. 집계 프레임 워크를 사용하여 질문을 부분으로 나누고 점차 대답을 얻을 때까지 점진적으로 구성하십시오. –

답변

0

유효 기간이 가까워서 "공정한"시도를 해보겠습니다. 하지만 여기에있는 문제는 필드 이름을 변경 한 것이므로 일치하지 않으면 일치하지 않습니다. 따라서 null 응답 :

var results = []; 

db.data.aggregate([ 
    { "$group": { 
     "_id": "$State", 
     "maxTemp": { "$max" :"$Temperature"} 
    }}, 
    { "$project": { 
     "_id": 0, 
     "State":"$_id", 
     "Temperature": "$maxTemp" 
    }} 
).result.forEach(function(match) { 
    results.push(db.data.findOne(match)); 
}); 
관련 문제