使用curl将文档放入couchdb时,如何跳过修订检查?

使用curl将文档放入couchdb时,如何跳过修订检查?,couchdb,Couchdb,我正在将一个文档放入couchdb,如下所示: curl -X PUT http://localhost:5984/bucket/keyname_1 \ -d '{"foo":"bar"}' 只要文档不存在,这就可以正常工作。如果确实存在,我需要包含一个“_rev”键,以验证我正在更新现有文档: curl -X PUT http://localhost:5984/bucket/keyname_1 \ -d '{"_rev":"2-207df9da","foo":"bar"}'

我正在将一个文档放入couchdb,如下所示:

curl -X PUT http://localhost:5984/bucket/keyname_1 \
    -d '{"foo":"bar"}'
只要文档不存在,这就可以正常工作。如果确实存在,我需要包含一个“_rev”键,以验证我正在更新现有文档:

curl -X PUT http://localhost:5984/bucket/keyname_1 \
    -d '{"_rev":"2-207df9da","foo":"bar"}'
如果缺少_rev键,或者_rev键与现有记录中的不匹配,则会抛出“冲突”错误。这就是您如何知道修订不会被丢弃的原因

但是如果我想无条件地写它,绕过这张支票怎么办

我有一个设计,在这个设计中,我用复选框更新主记录,然后我想保存一个简短的摘要记录,其中只有几个字段,可以很容易地抓取和下载摘要屏幕。因为我刚刚更新了主记录,我知道我有最新的副本。我只想写一篇文章,我不想为了得到修订版而必须先读一读。这是多余的


有没有办法修改我的请求,让couchbase跳过_revcheck,无条件地放入文档?

与其放入记录,不如发布新的记录


这样,您可以保留所有此类日志事件的完整记录,但不必处理文档冲突。

因此您有两个文档需要更新:main和summary。即使你有最新版本的main,这是否意味着你也有最新版本的summary,或者你只是想强制最后一个版本?如果是,那么您可以看看更新处理程序:

此外,如果您使用某种辅助
GET
获取最新
\u rev
,请使用更便宜的
HEAD
请求


编辑:顺便问一下,为什么要有两个单独的文档?
摘要
摘要是否完全一致?所有在那里找到的成员?那么,您是否可以使用显示或列表功能

您在问题的最后提到Couchbase,我认为这是一个错误,因为您知道Couchbase和CouchDB是两个不同的项目/产品:因为我不需要保留完整的记录-它不是日志事件。我只想要一个摘要屏幕的摘要记录,它将在其他地方使用并经常加载。摘要记录是主屏幕的一个非常小的子集。当您拥有最新版本的main时,可以保证您也拥有最新版本的summary。摘要仅包含完整记录中的少数字段。(顺便说一句:我们有这个摘要,因为这两个字段的提取频率要比数据更新的频率高得多,而且我们希望通过不下载只有几个字段的整个记录来节省数据库的带宽)那么你看了“更新处理程序”了吗?该页面上的文档甚至说明了“更新文档中的各个字段而不首先获取最新版本等”。此外,即使它们位于同一文档中,创建一个返回摘要的视图将占用磁盘空间,但保存bandwith等,您将感兴趣地了解您的解决方案。干杯,//丹