所以我是CouchDB的新手,我正在尝试编写一些python程序,它将上传一个JSON文件,上传一个VIEW,然后返回一个数组中的值。
我将视图写为if(doc['city.berlin'])
emit(doc['city.berlin'], doc['city.berlin'])
那么将数据提取到数组中的最佳可能性是什么?
此时终端中的返回数据看起来过于复杂,因为它正在返回{ID,key,value}。是否有一种只保存值的简单方法?
由于
答案 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