在使用多年的 MySQL 后刚刚接触 CouchDB。为什么我在返回所有记录的 View 中的值映射中获取元数据 _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 (以及其他几个地方)不在值中显示这些字段。
这并没有真正阻碍我的项目工作,但我不明白为什么会发生这种情况。是因为我设置 View 或进行查询的方式吗?
最佳答案
CouchDB 需要 _id 和 _rev 值。第一个,_id (uuid),必须确保数据库中文档的唯一性,第二个,_rev (修订版),必须确保多个进程尝试编辑同一文档时不会发生冲突。
这些字段是必填。
当_id 不在我们尝试创建的文档中时,它由 CouchDB 分配,_rev 始终由 CouchDB 分配。
关于mysql - 为什么元数据 _id 和 _rev 在值中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18939360/