CouchDb视图 - 列表中的键

时间:2012-03-12 17:06:32

标签: couchdb

我想查询CouchDB并且我有一个特定的需求:我的查询应该返回与此条件对应的文档的名称字段:id相等或包含在文档字段中(列表)。 例如,字段输出如下:

"output": [
       "doc_s100",
       "doc_s101",
       "doc_s102",
       "doc_s103",
   ],

我想在输出字段“doc_s102”中获取所有文档。 我在设计文档中写了一个视图:

"backward_by_docid": {
           "map": "function(doc) {if(doc.output) emit(doc.output, doc.name)}"
       }

但此视图仅在输出字段中具有唯一值时才有效。 如何解决此查询?

谢谢!

1 个答案:

答案 0 :(得分:2)

你必须迭代数组:

  if(doc.output) {
      for (var curOutput in doc.output) {
        emit (doc.output[curOutput],doc.name);
      }
  }

确保输出始终是一个数组(至少为[])

..当然使用key =“xx”而不是key = [“xxx”]