问题描述
/{db}/_all_docs
响应似乎具有相同的 id
和 key
值。两者有什么区别? key
字段未在任何地方记录。
解决方法
乍一看 id
和 key
似乎是多余的,但在考虑 _all_docs
时它是有道理的。来自文档:
执行内置的_all_docs view*,返回所有文档 在数据库中。除了 URL 参数(描述 下面),此端点与任何其他视图的工作方式相同。参考 查看端点文档以获得完整的描述 可用的查询参数和返回数据的格式。
* 强调我的
所以 _all_docs
是一个内置的视图。考虑view documentation。将视图视为由三个字段组成会很有帮助
- id
- 键
- 价值
用户设计的视图通常形成为 id = document._id with
emit()
函数(通过 map
函数)生成的键和值。
例如下面的地图函数
function (doc) {
emit(doc.someField,doc.someValue);
}
生成视图 id = doc._id,key = doc.someField,value = doc.someValue。