Mongo map-reduce输出,如何读取结果?

时间:2012-10-08 14:39:50

标签: mongodb mapreduce

我有一个map-reduce查询"工作"并做了我想要的但是到目前为止我还没有很好地使用我的输出数据,因为我无法锻炼如何阅读它...让我解释一下......这是我的发射:

emit( { jobid: this.job_id, type: this.type}, { count: 1 })

和reduce函数:

reduce: function (key, values) {
    var total = 0;
    for( i = 0; i < values.length; i++ ) {
        total += values[i].count;
    }
    return { jobid: this.job_id, type:this.type, count: total};
},

它的功能和我在结果集中得到的输出如下所示:

{ "_id" : { "jobid" : "5051ef142a120", "type" : 3 }, "value" : { "count" : 1 } }
{ "_id" : { "jobid" : "5051ef142a120", "type" : 5 }, "value" : { "count" : 43 } }
{ "_id" : { "jobid" : "5051f1a9d5442", "type" : 2 }, "value" : { "count" : 1 } }
{ "_id" : { "jobid" : "5051f1a9d5442", "type" : 3 }, "value" : { "count" : 1 } }
{ "_id" : { "jobid" : "5051f299340b1", "type" : 2 }, "value" : { "count" : 1 } }
{ "_id" : { "jobid" : "5051f299340b1", "type" : 3 }, "value" : { "count" : 1 } }

但是我该怎么做呢?我发出一个查询,告诉我找到所有的jobid条目&#34; jobid&#34;而忽略了类型?我试着这个,期待两排输出但没有输出!

db.mrtest.find( { "_id": { "jobid" : "5051f299340b1" }} );

我也试过并失败了:

db.mrtest.find( { "_id": { "jobid" : "5051f299340b1" }} );

and while:

db.mrtest.find( { "_id" : { "jobid" : "5051f299340b1", "type" : 2 }} )

确实按照希望生成一行输出,将其更改为再次无法生成任何内容:

db.mrtest.find( { "_id" : { "jobid" : "5051f299340b1", "type" : { $in: [2] }}} )

我觉得你不能用_id字段做这些事情,或者你呢?我想我需要重新组织我的先生输出,但感觉就像失败一样?!?!

帮助!

PS:如果有人可以解释为什么计数包含在名为&#34; value&#34;的字段中,那也是受欢迎的!&#34; 5051f299340b1&#34;

2 个答案:

答案 0 :(得分:1)

db.mrtest.find( { "_id.jobid": "506ea3a85e126" })

答案 1 :(得分:1)

你试过了吗?

db.mrtest.find( { "_id.jobid": "506ea3a85e126" })

这对我有用!