【问题标题】:Why are there two ways to update documents?为什么有两种更新文档的方法?
【发布时间】:2017-08-18 19:48:50
【问题描述】:

作为一名 CouchDB 初学者,我很难理解如何更新文档。

当我阅读文档时,我发现这让我很困惑:

1) 更新现有文档

要更新现有文档,您必须在 _rev 参数中指定当前修订号。

来源:Chapter 10.4.1 /db/doc

2) 更新函数

更新处理程序是客户端可以请求调用将创建或更新文档的服务器端逻辑的函数。

来源:Chapter 6.1.4 Design Documents

您能告诉我您更喜欢哪种方式来更新您的文档吗?


编辑 1:

假设数据结构只是一个简单的car 文档,其中包含一些基本字段。

{
    "_id": "123",
    "name": "911",
    "brand": "Porsche",
    "maxHP": "100",
    "owner": "Lorna"
}

现在owner 改变了,你还会使用选项 1 吗?选项 1 有很大的缺点,因为我不能只编辑一个字段。我需要先检索每个字段,只编辑 owner 字段,然后发回整个文档。我刚试过,我发现这很啰嗦。嗯……

【问题讨论】:

    标签: couchdb couchdb-2.0


    【解决方案1】:

    大多数情况下,您要选择选项 1“更新现有文档”;这对将数据存储在数据库中的标准文档进行操作。另一个选项与设计文档有关,例如视图(也是文档,这肯定会让 CouchDB 新用户感到困惑),这是完全不同的东西。

    坚持选项 1,祝你好运:)

    【讨论】:

    • 很好的解释,谢谢。请问当您想要对文档进行部分更新时,是否会选择选项 2?我搜索了那个,只找到了涉及使用更新处理函数的答案。以Answer: 23208549Answer: 41485731 为例。
    • 您绝对可以采用这种方法进行部分更新,但我有兴趣查看需要它的数据结构。我坚定地站在“越小的文档越不容易引起冲突”的阵营,尽管数据设计当然是个人喜好问题。
    • 洛娜,我允许自己编辑我原来的问题,并添加了一个关于您的评论的简单示例。如果您能告诉我您会选择哪个选项,我将不胜感激!非常感谢!
    • 我仍然会使用选项 1(感谢您在您的示例中为我分配了一辆很棒的汽车!)
    猜你喜欢
    • 1970-01-01
    • 2015-10-06
    • 1970-01-01
    • 1970-01-01
    • 2013-08-15
    • 2017-03-19
    • 2021-10-13
    • 2013-09-08
    • 2019-03-31
    相关资源
    最近更新 更多