Debugging mongodb:如何在mongodb shell上调试map/reduce

Debugging mongodb:如何在mongodb shell上调试map/reduce,debugging,shell,mongodb,mapreduce,Debugging,Shell,Mongodb,Mapreduce,我是MongoDB新手,我正在使用map/reduce。 有人能告诉我如何在使用map/reduce时进行调试吗?我使用了“print()”函数,但在MongoDB shell上没有打印任何内容。以下是我的reduce函数: var reduce = function(key, values){ var result = {count: 0, host: ""}; for(var i in values){ result.count++;

我是MongoDB新手,我正在使用map/reduce。 有人能告诉我如何在使用map/reduce时进行调试吗?我使用了“print()”函数,但在MongoDB shell上没有打印任何内容。以下是我的reduce函数:

    var reduce = function(key, values){
        var result = {count: 0, host: ""};

        for(var i in values){
        result.count++;
        result.host = values[i].host;
        print(key+" : "+values[i]);
        }
        return result;
    }
当我在shell上编写上述函数并在完成后按Enter键时,shell上不会打印任何内容。还有什么我应该做调试的吗

谢谢

似乎reduce函数中的
print()
语句被写入日志文件,而不是shell。因此,请检查日志文件中的调试输出


启动mongod进程时,您可以使用
--logpath D:\path\to\log.txt
参数指定日志文件。

mongodb网站上有一个专用页面,这是您的答案:

显然,reduce是错误的:line result.count++最终将包含数组值中包含的元素数,而数组值(在map reduce范例中)并没有任何意义。 reduce函数只是返回一个“随机”主机名(因为mapreduce算法在任何步骤都不能预测reduce内容)和一个随机数

你能解释一下你想做什么吗?
(我的猜测是,您需要计算每个主机上“某物”的数量)

看看这个简单的在线MongoDB MapReduce调试器,它允许在您的浏览器开发环境中获取样本数据的聚合结果,以及执行Map/Reduce/Finalize函数的分步调试

我希望它会有用


Linux中的日志文件位于/var/log/mongodb/mongodb.logMac OS:/usr/local/var/log/mongodb/mongo.log中,我仍然无法看到日志文件中的任何内容。tail-f/usr/local/var/log/mongodb/mongo.log对我来说很好。从reduce函数输出到该文件中调用的print(“一些调试文本”)。确保您的mongo正在将日志写入此文件。也许是你推翻了它。检查您的mongo配置文件(/usr/local/etc/mongod.conf)。上面的Mac操作系统位置对我不起作用。最好在自己的文件中添加--logpath标志。使用print()时,我可以看到输出。不要只提供链接。你的答案应该是独立的。请阅读你的调试器是可怕的!tks:-)