所以我是 CouchDB 的新手,我正在尝试编写一些 python 程序来上传 JSON 文件,上传 VIEW,然后返回数组中的值。
我把视图写成if(doc['city.berlin'])
emit(doc['city.berlin'], doc['city.berlin'])
那么将数据提取到数组中的最佳可能性是什么?
目前终端中的返回数据看起来太复杂了,因为它正在返回 {ID, key, value}。有没有一种简单的方法来只保存值?
谢谢
所以我是 CouchDB 的新手,我正在尝试编写一些 python 程序来上传 JSON 文件,上传 VIEW,然后返回数组中的值。
我把视图写成if(doc['city.berlin'])
emit(doc['city.berlin'], doc['city.berlin'])
那么将数据提取到数组中的最佳可能性是什么?
目前终端中的返回数据看起来太复杂了,因为它正在返回 {ID, key, value}。有没有一种简单的方法来只保存值?
谢谢
我假设你的文件看起来像这样
{
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"
上面的查询将检索索引键(城市)与您提供的值(柏林)匹配的文档的 id。
添加include_docs=true
也会在响应中检索原始文档:
/db/_design/mydesigndoc/_view/myview?key="berlin"&include_docs=true
您还可以在创建视图以聚合数据时添加一个内置的 reducer(_count、_sum 或 _stats),例如使用 _count reduce,您可以获得 city 的所有值及其计数的列表:
/db/_design/mydesigndoc/_view/myview?group=true