使用视图时在couchdb中导出数据

时间:2018-06-18 08:34:14

标签: couchdb couchdb-python

所以我是CouchDB的新手,我正在尝试编写一些python程序,它将上传一个JSON文件,上传一个VIEW,然后返回一个数组中的值。

我将视图写为if(doc['city.berlin']) emit(doc['city.berlin'], doc['city.berlin'])

那么将数据提取到数组中的最佳可能性是什么?

此时终端中的返回数据看起来过于复杂,因为它正在返回{ID,key,value}。是否有一种只保存值的简单方法?

由于

1 个答案:

答案 0 :(得分:0)

我假设你的文件看起来像这样

{
  city: 'berlin',
  x: 1,
  y: 2
}

您可以创建一个视图,该视图仅对city值为berlin的文档编制索引,并使用这样的地图函数:

function(doc) {
  if (doc.city === 'berlin') {
    emit(null, null)
  }
}

在上面的代码中,if语句正在选择到达索引的数据子集。更常见的模式是简单地发布城市:

function(doc) {
  emit(doc.city, null)
}

现在您的所有数据都在索引中,在查询时您可以选择要检索的城市数据:

/db/_design/mydesigndoc/_view/myview?key="berlin"

上述查询将检索ids索引(城市)的键与您提供的值(柏林)匹配的文档。

添加include_docs=true也会在响应中检索原始文档:

/db/_design/mydesigndoc/_view/myview?key="berlin"&include_docs=true

您还可以在创建视图时添加其中一个内置缩减器(_count,_sum或_stats)以聚合数据,例如使用_count reduce,您可以使用以下命令获取城市及其计数的所有值的列表:

/db/_design/mydesigndoc/_view/myview?group=true