gpt4 book ai didi

couchbase - 如何在 Couchbase 中更新文档的部分内容

转载 作者:行者123 更新时间:2023-12-03 06:53:08 26 4
gpt4 key购买 nike

在扫描文档时,我找不到如何更新部分文档。

例如 - 假设整个文档如下所示:

{
"Active": true,
"Barcode": "123456789",
"BrandID": "9f3751ef-f14f-464a-bb86-854e99cf14c0",
"BuyCurrencyOverride": ".37",
"BuyDiscountAmount": "45.00",
"ID": "003565a3-4a0d-47d9-befb-0ac642cb8057",
}

但我只想使用文档的一部分,因为在很多情况下我不想选择/更新整个文档:

{
"Active": false,
"Barcode": "999999999",
"BrandID": "9f3751ef-f14f-464a-bb86-854e99cf14c0",
"ID": "003565a3-4a0d-47d9-befb-0ac642cb8057",
}

如何使用 N1QL 来更新这些字段? Upsert完全替换了整个文档,更新语句不太清晰。

谢谢

最佳答案

您的问题的答案取决于为什么您只想更新文档的一部分(例如,您担心网络带宽吗?),以及您希望如何执行更新(例如,从网络控制台?从使用 SDK 的程序?)。

您在评论中提供了 4.5 子文档 API 的链接,该功能只能通过 SDK(例如,通过 Go 或 Java 程序)使用,该功能的目标是减少网络带宽不传送整个文件。您的用例是否包括通过 SDK 进行编程文档修改?如果是这样,那么子文档 API 是一个不错的选择。

在 N1QL 中使用“UPDATE ”语句是更改任意数量与可以为其指定“WHERE”子句的模式匹配的文档的好方法。如上所述,它的工作方式与 SQL 中的“UPDATE”语句非常相似。要使用上面的示例,您可以在 BuyDiscountAmount 为“45.00”的任何文档中将“Active”字段更改为 false:

UPDATE my bucket SET Active = false WHERE BuyDiscountAmount = "45.00"

运行 N1QL UPDATE 查询时,几乎所有网络流量都将在集群的查询、索引和数据节点之间进行,因此 N1QL 更新不会导致大量网络流量进出集群。

如果您提供有关您的用例的更多详细信息,以及为什么您只想更新部分文档,我可以就正确的方法提供更具体的建议。

关于couchbase - 如何在 Couchbase 中更新文档的部分内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37246934/

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