经过多年的MySQL后,CouchDB的新功能。为什么我在视图中的值映射中获取元数据_id和_rev返回所有记录?这是我的观点:
"views": "{
"all": "{
"map": "function (doc) {
emit(doc.date, doc)
}"
}"
}"
当我查询/ database / _design / id / _view / all时,我得到以下JSON:
{"total_rows":2,"offset":0,"rows":[
{"id":"b77bbd5ab73b809ca830fe4b6900506f","key":"[2013, 09, 21, 00, 00, 00]","value":{"_id":"b77bbd5ab73b809ca830fe4b6900506f","_rev":"11-b134dfe46f86c96b4f7e2cf0abb13b61","location":"Mesuk Market","product":"Traditional Pork Skewer","total_items":550,"created_at":"[2013, 09, 21, 23, 24, 06]","date":"[2013, 09, 21, 00, 00, 00]"}},
{"id":"b77bbd5ab73b809ca830fe4b69005f1e","key":"[2013, 09, 21, 00, 00, 00]","value":{"_id":"b77bbd5ab73b809ca830fe4b69005f1e","_rev":"2-ee4e464cdf5de23563c0cc6b62bc4b07","date":"[2013, 09, 21, 00, 00, 00]","created_at":"[2013, 09, 21, 23, 27, 00]","total_items":100,"product":"All Meat Skewer","location":"Mesuk Market"}}
]}
为什么我在值映射中获得_id和_rev?文档here(以及其他几个地方)不会在值中显示这些字段。
这并没有真正阻碍我在项目上的工作,但我不明白为什么会这样。它是从我设置我的视图或进行查询的方式来的吗?
答案 0 :(得分:1)
_id
和_rev
为special document fields:
_id
是数据库范围内唯一的文档ID _rev
是MVCC令牌答案 1 :(得分:0)
CouchDB需要 _id 和 _rev 值。第一个, _id ( uuid ),必须确保数据库中文档的唯一性,第二个是 _rev (修订),必须确保在多个进程尝试编辑同一文档时没有冲突。
这些字段是必填。
_id 由CouchDB分配,当它不在我们尝试创建的文档中时, _rev 始终由CouchDB分配。