你可以在Mongo中按照地图缩小进行分组吗?

时间:2012-08-08 11:58:12

标签: mongodb mapreduce pymongo

我有两个系列。 “people”与“location”相关联,如下所示:

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是正确的方法吗?

1 个答案:

答案 0 :(得分:0)

map-reduce也不会帮到你。它还可以在一个集合上运行。

在我看来,你正试图在这里运用你的关系设计技巧。不要那样做。 MongoDB需要一种全新的方法。

如果我是你,我可能会将位置归结为人物收集。

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

这样就可以使用map-reduce分析这些数据,因为所有内容都在同一个集合中。