需要使用scala在mongo中使用map reduce函数

时间:2015-09-21 23:08:41

标签: mongodb scala

我正在努力加入mongodb的两张桌子。我从谷歌搜索中了解到mongo中没有连接概念。但是,我们可以通过map reduce来实现这一点。我也是斯卡拉的新手。 我在mongodb有两张桌子。

User
    userid
    name
Role
    userid
    permission

我想将两个表中的数据组合起来,如下所示

userid, name, permission

示例数据将

05533, User1, read
05535, User2, read/write

有人可以帮忙在这里添加一些示例scala代码来实现这个地图缩减功能吗?

我尝试了以下代码,这种方法效果很好,但我有数百万条记录,并逐个查找超时。首先从用户表中获取userid,然后尝试查找相应的roleid。

              val role = Role.findById(db, userid) match {
                case Some(role) => role
                case None => Role(
                    title = "Role Not Found"
                )
              }

  def findById(db: DaoConnection, id:String) : Option[Role] = {        
    object RoleDAO extends SalatDAO[Role, ObjectId](collection = getCollection(db))        
    RoleDAO.findOne(MongoDBObject("_id" -> new ObjectId(id)));
  }

1 个答案:

答案 0 :(得分:0)

不是在scala方面查询,而是按照这种方法解决。

  1. 查询用户表以获取scala中的所有用户详细信息
  2. 查询角色表以获取scala中的所有角色
  3. 在客户端,将用户映射到角色以获得所需的输出。
  4. 这可能不是一个简单的解决方案,但这是针对这类问题提出的方法之一。