gpt4 book ai didi

javascript - 显式设置 CouchDB 文档键

转载 作者:行者123 更新时间:2023-11-28 16:26:17 25 4
gpt4 key购买 nike

CouchDB 文档似乎附有一个 key ;检索单个文档时它不会显示,但您可以使用它们来检索文档范围,例如:

 wget "http://localhost:5984/monitor20n/_all_docs?startkey=1111&endkey=2222

但是,显然该 key 始终与文档 ID 相同,因此您获得的只是这样的内容

{"total_rows":14269,"offset":0,"rows":[
{"id":"128127896626798592","key":"128127896626798592","value":{"rev":"1-4e07e2c4b4eddfad5846ddf905337197"}},
{"id":"128128575021907970","key":"128128575021907970","value":{"rev":"1-43d983af1e837a4415b6167cae3b5de8"}},
... and so on }}

(参见此处 key == id )。但是,您可以在 View 中使用更复杂的键,包括允许更复杂交互的向量;至少,您可以设置 View 的键,这样您现在就可以提前搜索内容,而无需查找文档 ID。现在的问题是:您可以在创建文档时设置这些键吗?或者也许在创建之后?一个明显的解决方法是创建一个像这样的 View

function (doc) {
emit(doc.key,doc)
}

但是,我想知道是否有更直接的方法来获得相同的效果。

最佳答案

键是 CouchDB View 的重要组成部分。对于 View ,键不必是文档 ID。但生成键的唯一方法是在 View 中使用 emit 函数。您可以设置的任何属性都不会自动成为键。

将 _all_docs 视为内置 View 。为了保持一致,它遵循与常规 View 相同的输出,并使用 id 作为键。但您无法更改 _all_docs View 。如果您想在保存文档时提供自己的_id,那么这将成为关键。因此,如果您想在“_all_docs” View 中自定义“键”,您可以创建如下文档:

{ _id: 'Sample1' }, {_id: 'My2'}。保存它们后,当您请求“_all_docs” View 时,您将得到:{“总行数”:2,“偏移量”:0,“行数”:[{“id”:“样本1”,“键”:“样本1”,“值”:{“rev”:“1-4e07e2c4b4eddfad5846ddf905337197”}},{"id":"My2","key":"My2","value":{"rev":"1-43d983af1e837a4415b6167cae3b5de8"}},...等等}}

以下是有关文档 ID 的构成的链接:

http://wiki.apache.org/couchdb/HTTP_Document_API#Special_Fields

虽然没有明确说明,但您不能使用对象或数组作为 DocumentID。

希望有帮助。

关于javascript - 显式设置 CouchDB 文档键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7904921/

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