我有两个查询在同一个集合上运行,一个使用find,另一个使用map reduce,两者都给出了不同的结果。
地图缩小
db.customerTrend.mapReduce(function() {
emit(this.value.trendDate, {
count: 1
})
}, function(key, values) {
var sum = 0;
values.forEach(function(value) {
sum = sum + 1;
});
return {
sum: sum
}
}, {
out: "totalByTrendDate"
})
输出
{ "_id" : null, "value" : { "sum" : 3 } }
{ "_id" : ISODate("2015-12-18T18:30:00Z"), "value" : { "sum" : 26 } }
查询查询
db.customerTrend.find({
"value.trendDate": ISODate("2015-12-18T18:30:00Z")
}).count()
输出
30105
因此对于同一日期查找查询显示30105条记录,而地图缩减查询仅显示26条,但正确的查询显示查询。