【发布时间】:2011-09-05 09:44:58
【问题描述】:
我对 MongoDB 和 MapReduce 还是很陌生。我需要对我的数据库中的集合做一些 MapReduce。 MAP 和 REDUCE_MAX 函数有效,因为我能够在 Mongo 交互式 shell (v.1.8.2) 中完成我的需求。但是,尝试使用 Mongo Java 驱动程序 (v. 2.6.3) 执行相同操作时出现错误
我的 MAP 和 REDUCE_MAX 函数如下所示:
String MAP =
"function(){" +
"if(this.type != \"checkin\"){return;}" +
"if(!this.venue && !this.venue.id){return;}" +
"emit({userId:this.userId, venueId:this.venue.id}, {count:1});" +
"};";
String REDUCE_MAX =
"function(key, values){" +
"var res = {count:0};" +
"values.forEach(function(value){result.count += value.count;});" +
"return res;" +
"};";
这是我正在执行的命令:
MapReduceOutput sum = collection
.mapReduce(MAP, REDUCE_MAX, null, null);
这是我得到的错误:
com.mongodb.CommandResult$CommandFailure: command failed [command failed [mapreduce] { "assertion" : "wrong type for BSONElement (replace) 10 != 2" , "assertionCode" : 13111 , "errmsg" : "db assertion failure" , "ok" : 0.0}
我不知道哪个 BSONElement 的类型有误。我已经用谷歌搜索了assertionCode: 13111。我还检查了 MongoDB 日志,但没有找到任何线索。
有没有人知道我可能遗漏了什么/做错了什么?如果你们需要更多详细信息,请告诉我。
【问题讨论】: