map是否减少了合并几个相互引用的集合部分的适当方法?

时间:2011-12-01 19:53:36

标签: mongodb mapreduce

在这里和其他网站上阅读有关map / reduce的内容,我仍然不确定这是解决这个问题的正确或错误方法。

我有三种模式:

User --  embeds many SearchRequests
SearchRequest -- references 1 Item
Item

我需要做的是从每个模型中获取一些信息,然后消除任何不符合标准的结果。这是map / reduce吗?

我想要的地图:

user.email, user.name, item.name, item.amount, 
 item.url, searchRequest.amountCutoff

然后我想我会减少并删除任何记录:

item.amount > searchRequest.amountCutoff

我遇到的问题是如何在地图中获取item.name, item.amount。这是我到目前为止(将在Users集合上调用map):

map = "function() {  if (this.search_requests)
  for (var ar in this.search_requests) {

// this part needs help  ---vvvv
    var theItem= items.where(_id: this.search_requests[ar].item_id) 

    emit ( { },
     { this.email, 
       this.name, 
       this.search_requests[ar].item_id,
       this.search_requests[ar].amountCutoff, 
       theItem.name,
       theItem.amount
      }
    }
} "

^^该语法可能不正确。我还在学习。它几乎看起来我需要相当于LINQs范围变量的mongo ...不确定是否可能。

所以我的问题:是否可以(或智能)访问另一个不是地图功能中的“映射”集合的集合?

1 个答案:

答案 0 :(得分:0)

AFAIK,遗憾的是,map / reduce目前不支持多个集合。

因为你知道标准item.count> n,在其上创建索引并查询文档。应包含用户的引用,比如userid。

可以通过在mongoshell中运行javascript来完成,也可以在您的环境中编写代码。