我有一个存储搜索查询日志的集合。它的两个主要属性是用户id和搜索查询。已注销用户的用户ID为空。我正试图运行一个mapreduce作业来找出每个用户的计数和术语。
var map=函数(){
如果(this.user_id!==空){
发出(this.user_id,this.search_query);
}
}
var reduce=函数(id,查询){
返回array.sum(querys+“,”);
}
db.searchhistories.mapreduce(地图,
减少,
{
查询:{“时间”:{
$gte:isodate(“2013-10-26t14:40:00.000z”),
$lt:isodate(2013-10-26t14:45:00.000z)
}
}
输出:“MR2”
}
)
引发以下异常
11月27日星期三06:00:07未捕获异常:映射减少失败:{
“errmsg”:“异常:断言src/mongo/db/commands/mr.cpp:760”,
“代码”:0,
“确定”:0
}
我查看了mr.cpp L#760但无法收集任何重要信息。这是什么原因?
我的收藏有如下价值
>db.searchHistories.find()
{“@id”:objectid(“5247a9e03815ef4a2a005d8b”),“results”:82883,“response@time”:0.86,“time”:isodate(“2013-09-29t04:17:36.768z”),“type”:0,“user@id”:null,“search@query”:“awareness campaign”}
{“id”:objectid(“5247a9e0606c791838005cba”),“results”:39545,“response”:0.369,“time”:isodate(“2013-09-29t04:17:36.794z”),“type”:0,“user”:34225174,“search”:eficaz eficiencia efectividad“}
最佳答案
看看那些文件,我发现这在奴隶身上是不可能的。不过,它在主人身上工作得很好。如果仍要使用从机,则必须使用以下语法。
db.searchhistories.mapReduce(map,
reduce,
{
query: { "time" : {
$gte : ISODate("2013-10-26T14:40:00.000Z"),
$lt : ISODate("2013-10-26T14:45:00.000Z")
}
},
out : { inline : 1 }
}
)
**使用内联函数时,请确保输出文档大小不超过16MB限制。
关于mongodb - mongo mapreduce中的断言异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20242433/