为什么CouchDB视图行使用;“关键点”是:“钥匙”;“值”:价值及;不仅仅是关键:价值

为什么CouchDB视图行使用;“关键点”是:“钥匙”;“值”:价值及;不仅仅是关键:价值,couchdb,Couchdb,为什么会卷曲http://localhost:5984/blog/_design/comments/_view/total_num?group=true返回 {"rows":[ {"key":"sum","value":23}, ]} 而不是 {"rows":[ {"sum": 23}, ]} 允许null对象作为键。每一行都可以有额外的数据,例如include\u docs=true查询的文档数据(doc)。除了Alex和Tim的回答之外: 视图的键可能不是唯一的,即同一个键可能

为什么
会卷曲http://localhost:5984/blog/_design/comments/_view/total_num?group=true
返回

{"rows":[
  {"key":"sum","value":23},
]}
而不是

{"rows":[
  {"sum": 23},
]}

允许
null
对象作为键。

每一行都可以有额外的数据,例如
include\u docs=true
查询的文档数据(
doc
)。

除了Alex和Tim的回答之外:

  • 视图的键可能不是唯一的,即同一个键可能已为多个文档发出,甚至为单个文档发出多次
  • 视图的行按键排序。JSON的对象类型是“无序的名称/值对集”。包括JavaScript在内的许多语言都不定义映射中键的顺序。因此,对于有序的事物,列表是更好的表示形式

    • 有两个不同的原因

      • 正如Tim McNamara指出的,在结果行中将键作为成员名称意味着由于JSON的规则,键仅限于字符串。这种方式允许人们拥有任何JSON类型的视图键

      • 正如Alex Koshelev指出的,如果我们允许键作为视图行中的对象成员名称,那么键和值将无法直接寻址。这意味着您必须调查每一行,以找出关键点是什么

      • 命名空间问题的第二个方面是键可能与该行中可能包含的任何元数据冲突。例如,使用include_docs=true或用于非简化视图输出的include docid成员

      或者,如果您想重新格式化输出以满足您的需要,可以使用_list函数根据您的喜好更改每一行