2013-05-03 5 views
2

나는 mongoDB를 매우 신중하게 생각하며 과제에 대한 질문을 찾으려고합니다. 주어진 도시 이름으로 모든 주를 찾고 싶습니다. MongoDB 도시 찾기

내가 모델이

을 나열 여기 http://docs.mongodb.org/manual/tutorial/aggregation-examples/ 에서 파일 내가이 작동하지 않는 이유에

aggregate({$group : { _id: $"state"}} , {$match : {city : "BOSTON"}}); 

힌트를하고 시도가?

+1

실행하면 오류가 발생합니까? –

+0

$가주의 따옴표 안에 들어가야하지 않습니까? –

+2

그리고'$ match'는'$ group' 전에 올 필요가 있습니다. – JohnnyHK

답변

2

나는 지정된 도시의 주를 선택하기 위해 집계가 필요 없다고 생각합니다.

db.zipcodes.distinct('state', { city : 'BOSTON' }) 

성능에 관하여 - distinctaggregate과 거의 동일한 행하는 것 같다 :

{ "TS를"ISODate ("2013-05-04T06 : 52 : 02.772Z")을 " "" "집계": "우편 번호", "파이프 라인": [{ "$ 일치": { "도시": " 1, "keyUpdates": 0, "numYield": 0, 0,: 0 "0" , "lockStats": { "timeLockedMicros": { "r": NumberLong (10), "w": NumberLong (5)}, "responseLength": 436, "r": NumberLong (0)}, "timeAcquiringMicros": { "r" 밀리 "14"클라이언트 ""127.0.0.1 ","사용자 ":" "}

{"TS "VS : ISODate ("이 2013-05-04T06 : 52 "cmd", "command": { "distinct": "zipcodes", "key": "state", "query :"11.169Z "),"op ":"command ","ns ": "test. ""{ "city": "BELMONT"}}, "ntoreturn": 1, "keyUpdates": 0, "numYield": 0, "lockStats": { "timeLockedMicros": { "r": NumberLong (12153), "w": NumberLong (0)}, "timeAcquiringMicros": { "r": NumberLong (4), "w": NumberLong (5)}}, "responseLength": 262, " 밀리 ": 12,"클라이언트 ":"127.0.0.1 ","사용자 ":" "}

+0

집계에 대해 .explain()을 어떻게 얻었습니까? 그들은 존재하지 않기 때문에. – lciamp

+1

그들은 별개로도 존재하지 않는다. 이것들을'db.setProfilingLevel (2)'프로파일 링에서 얻고 나서'db.system.profile.find()' –

+0

을 실행한다. 그러나 우리는 실행이 없기 때문에 꽤 쓸모가 없다. 계획 –

1

이것은 당신이 집계 프레임 워크와 함께 할 방법은 다음과 같습니다 "지퍼는 "당신의 수집해야합니다.

db.zips.aggregate([ 
    {$match: 
     { 
      city: "BOSTON" 
     } 
    }, 
    {$group: 
     { 
      _id: {state: "$state"} 
     } 
    } 
])