我有一个包含许多列的集合:col1、col2、WebsiteCode、CreatedDate、col3....、coln。
我想在 CreatedDate 范围内按 WebsiteCode 分组。
所以我这样做:
地图 :
function Map() {
var key={WebsiteCode:this.WebsiteCode};
val={Count: 1};
emit(key,val);
}
减少 :
function Reduce(key, values) {
var res = {Total:0};
values.forEach(function(value) {
res.Total += value.Count;
});
return res;
}
及查询范围DateTime:
{ "CreatedDate" : { "$gte" : dateFrom , "$lte" : dateTo } }
最后,我运行这个 mapreduce 命令。结果返回的结果不是我所期望的,许多行都有Total = NaN
Ex:{_id:{WebsiteCode:"websitecode1"}}, {value:{Total:NaN}}
但是当我运行 count 命令时:
db.collect.find({ "WebsiteCode" : "websitecode1", "CreatedDate" : { "$gte" : dateFrom), "$lte" : dateTo } }).count();
结果返回:927
你能向我解释我做错了什么吗?