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

CouchDB View - Filter by List Field Attribute (doc.objects.[0].attribute)

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

示例文档:

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

使用该文档的示例,我想要一个视图,该视图将 return "handle"

的值

我发现这个例子的标题是 - 获取具有特定属性的 object 的内容,例如doc.objects.[0].属性。但是当我填写属性名称时,例如"handle" 并将 doc.objects 替换为 doc.samples,我没有得到任何结果:

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

这将创建一个键值对数组,其中键始终是 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)
  }
}

像这样 ->

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

它会根据doc._id字段作为关键字产生一个结果。或者,如果您希望您的密钥基于 .handle 字段,您可以反转 emit 中的参数,以便您可以按 startKey=endKey=.

进行搜索