mongodb查询选项

时间:2012-05-09 14:44:56

标签: mongodb

如果我有一个字段,请说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({...} , {...})
}

...所以推荐哪个?

带结果语句的查询是否减少了要检查的地图文件数?

如果是,那我怎么能找到那些检查过的文件?

1 个答案:

答案 0 :(得分:0)

假设你有一个关于“extr_date”的索引,第一种方法可能会更快,因为它会减少送到地图的文件数量。

要弄清楚有多少文档被过滤掉,您可以尝试使用.explain()单独运行查询。像这样:

db.some_input_coll.find({ extr_date : {$gte:any_given_date}}).explain()

希望这会有所帮助。