我构建了一个很棒的地图缩减,我的数据完美呈现。我唯一的问题是map reduce会在每次加载页面时创建集合,跨每个用户。这是地图减少的正常用法,还是我应该使用cron在后台运行它,例如每天在后台运行一次,或者以其他方式生成内容,然后每次都加载它。
答案 0 :(得分:0)
MapReduce的常见用例是将其作为后台作业运行,以创建报告或缓存聚合和/或转换后的数据以供以后查询。因此,默认行为是将数据写入新集合。
但MapReduce还有一个选项可以直接为您提供输出。在mongo shell中执行MapReduce命令时,可以通过将对象{ inline: 1 }
作为out:
参数传递来执行此操作。这是一个例子:
db.runCommand(
{
mapReduce: 'source_collection',
map: mapFunction,
reduce: reduceFunction,
out: { inline: 1 }
}
您没有说明您使用的数据库驱动程序,因此唯一可以提供给您的建议是参考其文档以了解它是否以及如何公开此功能。
请记住,aggregation pipeline可以涵盖内联MapReduce的所有模糊用例,但通常具有卓越的性能和更易读的代码。