2012-08-08 39 views
0

我有兩個集合。 「people」與一個「location」像這樣連接:你可以在Mongo中做map map reduce嗎?

location_id = ObjectId() 

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

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

我想創建的locations直方圖給予人的數量在每個city。但我似乎無法使用Mongo group命令,因爲它們是不同的集合。用map/reduce做正確的方法嗎?

回答

0

map-reduce也不會幫你在這裏。它也在一個集合上運作。

在我看來,你正試圖在這裏應用你的關係設計技巧。不要這樣做。 MongoDB需要一個全新的方法。

如果我是你,我可能會將位置變爲正常的人員集合。

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

這樣就可以用map-reduce分析這些數據,因爲一切都在同一個集合中。

+0

儘管位置集合中有很多信息 - 不僅僅是城市。有沒有另一種方式去做事情而不將每個人都存儲起來? – nickponline 2012-08-08 12:05:48

+0

@nickponline:使用關係數據庫,例如:) – 2012-08-08 12:08:07

+0

有沒有一種有效的方法來非規範化數據,而無需獲取每個人的相應位置並更新? – nickponline 2012-08-08 15:03:34