在扫描文档时,我找不到如何更新文档的一部分.
例如 - 说整个文档看起来像这样:{"Active":true,"条形码":"123456789","BrandID":"9f3751ef-f14f-464a-bb86-854e99cf14c0","BuyCurrencyOverride":".37" ,"BuyDiscountAmount":"45.00","ID":"003565a3-4a0d-47d9-befb-0ac642cb8057",}
但我只想处理部分文档,因为在许多情况下我不想选择/更新整个文档:
{"有效":false,"条形码":"999999999","BrandID":"9f3751ef-f14f-464a-bb86-854e99cf14c0","ID":"003565a3-4a0d-47d9-befb-0ac642cb8057",}
如何使用N1QL更新这些字段?Upsert完全替换整个文档,更新语句不是那么清楚.
谢谢
小智 7
您的问题的答案取决于您为什么只想更新文档的一部分(例如,您是否关心网络带宽?),以及您希望如何执行更新(例如,从Web控制台?来自使用该程序的程序) SDK?).
在您的评论中为其提供链接的4.5子文档API是仅通过SDK(例如,来自Go或Java程序)可用的功能,并且该功能的目标是通过不传输整个来减少网络带宽周围的文件.您的用例是否包含通过SDK进行的程序化文档修改?如果是这样,那么子文档API是一个很好的方法.
在N1QL中使用" UPDATE "语句是更改任何数量的文档的好方法,这些文档与您可以指定"WHERE"子句的模式匹配.如上所述,它与SQL中的"UPDATE"语句非常相似.要使用上面的示例,您可以在BuyDiscountAmount为"45.00"的任何文档中将"活动"字段更改为false:
UPDATE my bucket SET Active = false WHERE BuyDiscountAmount = "45.00"
Run Code Online (Sandbox Code Playgroud)
运行N1QL UPDATE查询时,几乎所有网络流量都将位于群集的查询,索引和数据节点之间,因此N1QL更新不会导致进出群集的网络流量过大.
如果您提供有关用例的更多详细信息,以及为什么只想更新部分文档,我可以就正确的方法提供更具体的建议.
归档时间: |
|
查看次数: |
6112 次 |
最近记录: |