在这里和其他网站上阅读有关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 ...不确定是否可能。
所以我的问题:是否可以(或智能)访问另一个不是地图功能中的“映射”集合的集合?
答案 0 :(得分:0)
AFAIK,遗憾的是,map / reduce目前不支持多个集合。
因为你知道标准item.count> n,在其上创建索引并查询文档。应包含用户的引用,比如userid。
可以通过在mongoshell中运行javascript来完成,也可以在您的环境中编写代码。