为什么这个MapReduce映射函数不起作用?

时间:2016-04-17 00:34:27

标签: mapreduce cloudant

我有一个Cloudant数据库,其中包含使用以下格式的文档:

{
  "_id": "0ea1ac7d5ef28860abc7030444515c4c",
  "_rev": "1-362058dda0b8680a818b38e9c68c5389",
  "text": "text-data",
  "time-data": 1452988105,
  "time-text": "3:48 PM - 16 Jan 2016",
  "link": "http://url/to/website"
}

我正在尝试创建一个视图,以便在开始和结束time-data之间轻松统计文档。但是,此映射函数会导致查询返回“找不到文档”:

function (doc) {
  emit(doc.time-data, 1);
}

......虽然这样做:

function (doc) {
  emit(doc._id, 1);
}

为什么会这样?

1 个答案:

答案 0 :(得分:2)

问题在于您的字段名称。它包含一个破折号:-

Javascript将此解释为:

return doc.time - data
return doc.time minus data

您可以更改自己的属性(类似time_data),也可以像这样创建视图:

function (doc) {
    if (doc['time-data']) {
        emit(doc['time-data'], 1);
    }
}