有什么方法可以在mapreduce函数中查看地图结果吗?

时间:2011-06-01 17:16:40

标签: ruby-on-rails ruby mongodb

出于调试目的,能够从map方法中看到您正在返回的内容会很棒。红宝石有可能吗?

2 个答案:

答案 0 :(得分:2)

要在Mongo shell中执行此操作,您可以定义自己的emit()函数的调试版本以打印跟踪信息。

function emit(k, v) {
    print("emit");
    print("  k:" + k + " v:" + tojson(v));
}

查看MongoDB文档中的Troubleshooting MapReduce以获取更多信息。

答案 1 :(得分:0)

我知道Mongo文档建议定义你自己的emit函数,但是当我观察Mongo的日志时,我发现在map-和reduce函数中直接使用print()更容易。

只需将任何print()放入代码中,运行tail -f /var/log/mongodb/mongodb.log,然后运行代码即可。您应该看到print()的输出到控制台。

以下是一些好处:

  • 调试reduce()函数的能力 - 定义你自己的emit()在这里没有帮助
  • 每次启动mongo控制台时都不需要定义emit()函数
  • 在编辑器中编写代码,而不是在控制台和IDE之间来回切换
  • 能够以您的母语进行代码生成和变量插值