CouchDB视图-按列表字段属性筛选(doc.objects.[0].属性)

CouchDB视图-按列表字段属性筛选(doc.objects.[0].属性),couchdb,Couchdb,我需要创建一个视图,列出文档字段属性的值 样本文件: { "_id": "003e5a9742e04ce7a6791aa845405c17", "title", "testdoc", "samples": [ { "confidence": "high", "handle": "joetest" } ] } 例如,使用该文档,我需要一个返回handle值的视图 我发现这个示例的标题是-Get具有特定

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

样本文件:

{
   "_id": "003e5a9742e04ce7a6791aa845405c17",
   "title", "testdoc",
   "samples": [
       {
           "confidence": "high",
           "handle": "joetest"
       }
   ]
}
例如,使用该文档,我需要一个返回handle值的视图

我发现这个示例的标题是-Get具有特定属性的对象的内容,例如doc.objects。[0]。属性。但是当我填写属性名称时,例如用doc.samples处理和替换doc.objects,我没有得到任何结果:

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

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

这将创建一个键值对数组,其中键始终是句柄的值。将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.\u id字段作为键生成结果。或者,如果希望密钥基于.handle字段,则可以反转emit中的参数,以便可以按startKey=,endKey=.进行搜索。

如下->

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


它将根据doc.\u id字段作为键生成结果。或者,如果希望密钥基于.handle字段,则可以反转emit中的参数,以便可以通过startKey=,endKey=。

Oh进行搜索。我误读了你的例子,博士。示例是一个数组。我会更新我的答案。太好了,谢谢你。我可以在这个设置中使用startkey吗?或者我需要在python应用程序中进行筛选吗?列表按键排序。您可以使用查询参数请求一个范围?startkey=…&endkey=…太棒了,再次感谢llabball。事实上,我正在使用此视图的结果作为基础,以便在样本列表中具有相同句柄值的记录之间查找匹配项。如果有可能在视图中而不是在代码中这样做,我可以创建另一个问题并发布链接。是的,可以使用reduce步骤。创建一个新问题。我误读了你的例子,博士。示例是一个数组。我会更新我的答案。太好了,谢谢你。我可以在这个设置中使用startkey吗?或者我需要在python应用程序中进行筛选吗?列表按键排序。您可以使用查询参数请求一个范围?startkey=…&endkey=…太棒了,再次感谢llabball。事实上,我正在使用此视图的结果作为基础,以便在样本列表中具有相同句柄值的记录之间查找匹配项。如果有可能在视图中而不是在代码中这样做,我可以创建另一个问题并发布链接。是的,可以使用reduce步骤。创建一个新问题。^5我们以几乎相同的答案结束:-谢谢sebster。我两个都愿意接受,但我不能。我两个都投了赞成票。嘿,是的。。。嗯,这并不是说我们有很多方法来解决这个问题。事实上,等等,我们有。。。所有的for类型都在javascript@Jon里德谢谢,但他更快,所以他的回答无论如何都应该被接受。同样,对他的答案也进行了投票。这是应该的,伙计:^5我们以几乎相同的答案结束:-谢谢sebster。我两个都愿意接受,但我不能。我两个都投了赞成票。嘿,是的。。。嗯,这并不是说我们有很多方法来解决这个问题。事实上,等等,我们有。。。所有的for类型都在javascript@Jon里德谢谢,但他更快,所以他的回答无论如何都应该被接受。对他的答案也进行了投票。这就是应该的,伙计: