0

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

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

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

目前终端中的返回数据看起来太复杂了,因为它正在返回 {ID, key, value}。有没有一种简单的方法来只保存值?

谢谢

4

1 回答 1

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"

上面的查询将检索索引键(城市)与您提供的值(柏林)匹配的文档的 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
于 2018-06-18T09:37:46.857 回答