2012-08-08 2 views
0

두 개의 모음이 있습니다. "people은"지금 같은 "location"와 연결되어Mongo에서 맵 축소로 그룹화 할 수 있습니까?

location_id = ObjectId() 

db.people.insert(
{ 
    _id : ObjectId(), 
    name : "Nick", 
    location : location_id 
}); 

db.locations.insert(
{ 
_id : location_id, 
    city : "Cape Town" 
}); 

나는 각 city 사람들의 수를 제공 locations의 히스토그램을 생성하고 싶습니다. 하지만 Mongo group 명령은 다른 모음이므로 명령을 수행 할 수 없습니다. map/reduce로 올바른 방법이 있습니까?

답변

0

map-reduce도 여기 도움이되지 않습니다. 또한 단일 컬렉션에서 작동합니다.

여기서는 관계형 디자인 기술을 적용하려고합니다. 그러지 마. MongoDB는 신선한 접근 방식이 필요합니다.

내가 너라면, 아마도 사람들 컬렉션으로 위치를 비정규화할 것입니다.

db.people.insert(
{ 
    _id : ObjectId(), 
    name : "Nick", 
    location : {city: "Cape Town"} 
}); 

이렇게하면 모든 데이터가 동일한 컬렉션에 있으므로 map-reduce를 사용하여이 데이터를 분석 할 수 있습니다.

+0

도시뿐만 아니라 위치 컬렉션에도 많은 정보가 있습니다. 이 모든 것을 각 사람에게 저장하지 않고 일을 처리하는 또 다른 방법이 있습니까? – nickponline

+0

@nickponline : 관계형 데이터베이스를 사용하십시오. 예 : –

+0

각 사람의 해당 위치를 가져오고 업데이트하지 않고 데이터를 비정규 화하는 효율적인 방법이 있습니까? – nickponline