CouchDB视图 - 按列表字段属性过滤(doc.objects。[0] .attribute)

时间:2015-04-14 16:50:58

标签: couchdb

我需要创建一个列出doc字段属性值的视图。

示例文档:

{
   "_id": "003e5a9742e04ce7a6791aa845405c17",
   "title", "testdoc",
   "samples": [
       {
           "confidence": "high",
           "handle": "joetest"
       }
   ]
}

使用该文档的示例,我想要一个将返回“handle”

值的视图

我在标题中找到了这个例子 - 获取具有特定属性的对象的内容,例如doc.objects。[0]属性约。但是当我填写属性名称时,例如“处理”并用doc.samples替换doc.objects,我没有得到任何结果:

Toggle line numbers
// map
function(doc) {
  for (var idx in doc.objects) {
    emit(doc.objects[idx], attribute)
  }
}

2 个答案:

答案 0 :(得分:2)

这将创建一个键值对数组,其中键始终是handle的值。将null替换为您想要的值,例如doc.title。如果要将文档附加到每一行,请在请求视图时使用查询参数?include_docs=true

// map
function (doc) {
  var samples = doc.samples
  for(var i = 0, sample; sample = samples[i++];) {
    emit(sample.handle, null)
  }
}

答案 1 :(得分:2)

喜欢这个 - >

function(doc) { 
    for (var i in doc.samples) {
      emit(doc._id, doc.samples[i].handle)
    }   
}

它将生成基于doc._id字段作为键的结果。或者,如果您希望密钥基于.handle字段,则可以反转emit中的参数,以便按startKey=endKey=进行搜索。