如何在Mongoose mapreduce中调用相关模型

所以这可能是mapreduce不是处理这个最好的方法,但这是我想要实现的。

我有一个事件模式和场地模式。 每个事件有多个date和0/1地点​​。 我希望在事件保存时为每个可能的date生成条目,并将其与另一个集合中的场地信息一起存储 – 例如发生的事件。 但我有2个问题/问题。

  1. 即使在使用示波器时,我似乎也无法从地图function中调用外部事件,所以我的电话查找地点信息失败。

  2. 哪里是最好的地方处理每个date生成条目? 循环浏览地图中的date并发出每个date? 或者在reduce或finalize函数中?

而不是仅仅告诉我,我不能从一个mapreduce函数调用dbref,我宁愿find最有效的解决scheme来创build事件保存中包含所需事件/场地数据的事件集合。 我打开其他方法,但下面的代码应该概述我的需要。

Event.pre('save', function (next) { var o = {}; o.scope = {Venue: mongoose.model.Venue}; o.map = function () { var data = {dates: this.dates}; var self = this; if(this.venue) { Venue.view(this.venue, {}, function(err, doc) { if(doc) { data.venue_name = doc.name; } emit(self._id, data); }); } else { emit(this._id, data); } }; o.reduce = function (k, vals) { return vals; }; o.out = { replace: 'occurrences' }; o.verbose = true; mongoose.models.Event.mapReduce(o, function (err, model, stats) { next(); }); }); 

map / reduce一次只能对一个集合进行操作。 我的build议是:

  1. 地图/减less事件,并为每个date发射一次,包括事件ID和场地ID(希望你有事件收集的场地ID)
  2. 查询具有场所ID的所有logging,该文件的查询场所的结果收集(“事件”),然后用非规范化场地信息更新“事件”文件。