【问题标题】:Can you do group by as map reduce in Mongo?您可以在 Mongodb 中作为 mapreduce 进行分组吗?
【发布时间】:2012-08-05 12:48:50
【问题描述】:

我有两个系列。 “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 的正确方法是什么?

【问题讨论】:

    标签: mongodb mapreduce pymongo


    【解决方案1】:

    map-reduce 在这里也帮不了你。它还对单个集合进行操作。

    在我看来,您正在尝试在这里应用您的关系设计技能。不要那样做。 MongoDB 需要一种全新的方法。

    如果我是你,我可能会将位置非规范化为人员集合。

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

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

    【讨论】:

    • 虽然位置集合中有很多信息 - 不仅仅是城市。有没有另一种方法可以在不将所有这些都存储在每个人身上的情况下做事?
    • @nickponline: 使用关系数据库,例如:)
    • 是否有一种有效的方法可以在不获取每个人的相应位置并更新的情况下对数据进行非规范化?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-19
    • 2012-07-25
    • 1970-01-01
    • 2019-10-09
    • 2010-10-23
    相关资源
    最近更新 更多