如果我有一个字段,请说extr_date
,我想运行MAP-REDUCE,我想使用extr_date
大于任何特定日期的文档,
我有两种选择,
首先我将查询字段提供给结果语句,如下所示
var res_acc = db.some_input_coll.mapReduce(map_func, red_func, {query : { extr_date : {$gte:any_given_date}},finalize : final, out :{ "merge" : "some_output_coll" }});
第二我将if条件提供给map函数,如下所示,
var map_func = function(){
if(this.extr_date > given_date)
{
emit({...} , {...})
}
...所以推荐哪个?
带结果语句的查询是否减少了要检查的地图文件数?
如果是,那我怎么能找到那些检查过的文件?
答案 0 :(得分:0)
假设你有一个关于“extr_date”的索引,第一种方法可能会更快,因为它会减少送到地图的文件数量。
要弄清楚有多少文档被过滤掉,您可以尝试使用.explain()单独运行查询。像这样:
db.some_input_coll.find({ extr_date : {$gte:any_given_date}}).explain()
希望这会有所帮助。