gpt4 book ai didi

couchdb - CouchDB文档更新处理程序(就地更新)

转载 作者:行者123 更新时间:2023-12-03 08:55:09 25 4
gpt4 key购买 nike

http://wiki.apache.org/couchdb/Document_Update_Handlers

CouchDB(0.10及更高版本)现在支持就地更新。我在理解其工作方式时遇到了麻烦。我尝试使用提供的示例,但无法正常工作。

有人可以提供一些示例和示例来访问就地更新。

谢谢

最佳答案

示例函数in-place与其他函数中的“就地”更新不同
数据库。 CouchDB仍然使用仅追加的体系结构。文件更新
处理程序仍会创建新的文档修订版等。

尽管如此,更新处理程序还是非常方便并且值得学习。

假设您有一个带有累加器的文档。您
想要仅通过一个HTTP查询在文档中累积一个整数,指定
使用amount参数的增量。考虑以下命令:

curl -X PUT http://localhost:5984/db
# Returns {"ok":true}

curl -H "Content-Type:application/json" -X POST http://localhost:5984/db/_bulk_docs -d @-
{"docs":
[
{"_id": "my_doc", "number": 23},
{"_id": "_design/app",
"updates": {
"accumulate": "function (doc, req) {
var inc_amount = parseInt(req.query.amount);
doc.number = doc.number + inc_amount;
return [doc, \"I incremented \" +
doc._id + \" by \" +
inc_amount];
}"
}
}
]
}
# Returns [{"id":"my_doc","rev":"1-8c9c19a45a7e2dac735005bbe301eb15"},
# {"id":"_design/app","rev":"1-83ec85978d1ed32ee741ce767c83d06e"}]

(请记住在POST中的JSON对象后按文件结尾^ D。)

接下来确认要累积的文档( my_doc)是否存在:
curl http://localhost:5984/db/my_doc
# Returns {"_id":"my_doc","_rev":"1-8c9c19a45a7e2dac735005bbe301eb15",
# "number":23}

现在,您可以使用 accumulate参数调用 amount更新处理程序,以
更新字段。
curl -X PUT \
http://localhost:5984/db/_design/app/_update/accumulate/my_doc?amount=15
# Returns: I incremented my_doc by 15

curl http://localhost:5984/db/my_doc
# Returns {"_id":"my_doc","_rev":"2-<whatever>",
# "number":38}

请注意,新的 number值为38,即23 + 15。

关于couchdb - CouchDB文档更新处理程序(就地更新),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2972068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com