2012-08-08 32 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