如何通过单个请求仅从CouchDB获取某些文档的某些字段?

时间:2016-05-20 02:41:09

标签: mapreduce couchdb couchdb-futon

创建一个视图,该视图仅返回文档中的值的子集,每个值的键和值都在json字符串中。就像一个给定的视图返回一个文件,如下所示,是否有可能获得一个请求的一些字段信息?谢谢 { "total_rows":10, "offset":3, "rows":[{ "id":"doc1", "key":"abc123", "value": { "_id":"aaaa", "_rev":"bbb", "field1":"abc", "field2":"bcd", "field3":"cde", "field4":"123", "field5":"789", "field6":"aa@email.com", "field7":"ttt", "field8":"iii", "field9":[{ "field91":"tyui", "field92":"55555" }], "field10"::"0000", "field11"::"55555", "field12"::"0030"......... } } 我只想创建一个只返回以下字段的视图: { "field1":"abc", "field2":"bcd", "field3":"cde", "field4":"123", "field5":"789", "field6":"aa@email.com", "field7":"ttt", "field8":"iii", "field9":[{ "field91":"tyui", "field92":"55555" }] }

1 个答案:

答案 0 :(得分:2)

仅使用选定字段发出新文档的地图功能。例如,让我们仅映射field1(字符串)和field9(数组):

function map(doc) {
  emit(doc._id, {
    field1: doc.field1, 
    field9: doc.field9
  });
}

在上面的示例中,将使用作为原始文档ID的键来触发每个文档,并且值是您需要的映射字段。 如果您计划稍后添加reduce函数,这将非常有用。

根据您的使用情况,您可能只想发出映射的对象:

function map(doc) {
  emit({
    field1: doc.field1, 
    field9: doc.field9
  });
}

请参阅http://guide.couchdb.org/draft/views.html 有关构建数据视图的文档非常好,您可以通过试验发现很多..