如何将现有数据保留在 couchbase 中并且仅更新新数据而不覆盖

2023-12-30

因此,假设我在存储桶下创建了一些记录/文档,并且用户仅更新 RDBMS 中 10 列中的一列,因此我尝试仅发送该一列数据并在 couchbase 中更新它。但问题是 couchbase 会覆盖整个记录并为其余列设置 NULL。

一种方法是从 Cbase 获取现有记录后复制所有数据,然后在从旧列复制数据的同时覆盖新列。但这看起来并不是一个最佳方法

有什么建议么?


您可以使用 N1QL 更新 Statments google for Couchbase N1QL UPDATE 使用更新的值替换已存在的文档。

update:

UPDATE keyspace-ref [use-keys-clause] [set-clause] [unset-clause] [where-clause] [limit-clause] [returning-clause]

设置子句:

SET path = expression [update-for] [ , path = expression [update-for] ]*

更新为:

FOR variable (IN | WITHIN) path  (, variable (IN | WITHIN) path)* [WHEN condition ] END  

未设置子句:

UNSET path [update-for] (, path [ update-for ])*  
keyspace-ref: Specifies the keyspace for which to update the document.

您可以通过以下方式将可选的命名空间名称添加到键空间名称:

namespace-name:keyspace-name.

use-keys-clause:指定要更新的数据项的键。选修的。键可以是任何表达式。

set-clause:指定要更改的属性的值。

unset-clause:从文档中删除指定的属性。

update-for:update for 子句使用 FOR 语句迭代嵌套数组,并为数组中的每个匹配元素设置或取消设置给定属性。

where-clause:指定数据更新需要满足的条件。选修的。

limit-clause:指定可以更新的最大对象数。该子句必须以非负整数作为其上限。选修的。

Returning-clause:返回您在 result_expression 中指定的更新的数据。

RBAC 权限

执行 UPDATE 语句的用户必须对目标键空间具有查询更新权限。如果语句中有任何需要读取数据的子句,例如 SELECT 子句或 RETURNING 子句,则还需要对各个子句中引用的键空间具有 Query Select 权限。有关用户角色的更多详细信息,请参阅授权。

例如,

要执行以下语句,用户必须具有查询更新权限travel-sample.

UPDATE `travel-sample` SET foo = 5

要执行以下语句,用户必须具有查询更新权限travel-sample和查询选择权限beer-sample.

UPDATE `travel-sample` 
SET foo = 9 
WHERE city = (SELECT raw city FROM `beer-sample` WHERE type = "brewery"
To execute the following statement, user must have the Query Update privilege on `travel-sample` and Query Select privilege on `travel-sample`.

UPDATE `travel-sample` 
SET city = “San Francisco” 
WHERE lower(city) = "sanfrancisco" 
RETURNING *
Example

以下语句将产品的“类型”“odwalla-juice1”更改为“product-juice”。

UPDATE product USE KEYS "odwalla-juice1" SET type = "product-juice" RETURNING product.type

"results": [
        {
            "type": "product-juice"
        }
    ]

此语句从具有“odwalla-juice1”键的文档的“product”键空间中删除“type”属性。

UPDATE product USE KEYS "odwalla-juice1" UNSET type RETURNING product.*

"results": [
        {
            "productId": "odwalla-juice1",
            "unitPrice": 5.4
        }
    ]

此语句取消设置教程键空间中键为“dave”的文档的“children”数组中的“性别”属性。

UPDATE tutorial t USE KEYS "dave" UNSET c.gender FOR c IN children END RETURNING t

"results": [
        {
            "t": {
                "age": 46,
                "children": [
                    {
                        "age": 17,
                        "fname": "Aiden"
                    },
                    {
                        "age": 2,
                        "fname": "Bill"
                    }
                ],
                "email": "[email protected] /cdn-cgi/l/email-protection",
                "fname": "Dave",
                "hobbies": [
                    "golf",
                    "surfing"
                ],
                "lname": "Smith",
                "relation": "friend",
                "title": "Mr.",
                "type": "contact"
            }
        }
    ]  

从版本 4.5.1 开始,UPDATE 语句已改进为 SET 嵌套数组元素。 FOR 子句得到增强,可以计算函数和表达式,新语法支持多个嵌套 FOR 表达式来访问和更新嵌套数组中的字段。通过链接 FOR 子句支持其他数组级别。

Example

UPDATE default
    SET i.subitems = ( ARRAY OBJECT_ADD(s, 'new', 'new_value' )
        FOR s IN i.subitems END ) 
            FOR s IN ARRAY_FLATTEN(ARRAY i.subitems 
                FOR i IN items END, 1) END;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将现有数据保留在 couchbase 中并且仅更新新数据而不覆盖 的相关文章

  • 在loudant搜索索引中添加功能

    我在 cloudant 中有一个 Json 文档 id 3 f812228f45b5f4e4962505561953ew245 rev 3 f812228f45b5f4e496250556195372b2 wiki page http en
  • 从 CouchDB 解析 JSON 时如何超越“total_rows”

    我使用以下 jQuery 代码从 CouchDB 获取 JSON 文件 Function getURL var api url http 127 0 0 1 5984 couchcontentqueue design DocCollecti
  • Couchbase 的 Twisted API 无法与 Python Tornado 一起使用

    我正在尝试使用 Couchbase 4 0 开发人员预览版运行 Tornado 服务器 import tornado web import tornado httpserver import tornado options import t
  • 如何在 couchdb 中编写通配符搜索查询,其中名称如“a%”

    如何在 couchdb 中编写通配符搜索 我想在 sql 中编写与 LIKE 相同的查询 请帮助我 name arun surname mr name balu surname tp 我需要列出所有以 a 开头的名称 Thanks 在 co
  • CouchDB 备份和克隆数据库

    我们正在寻找 CouchdDB 作为类似 CMS 的应用程序 围绕备份我们的生产数据库有哪些常见模式 最佳实践和工作流程建议 我对克隆数据库以用于开发和测试的过程特别感兴趣 仅从实时运行的实例下复制磁盘上的文件就足够了吗 您可以在两个实时运
  • Couchbase N1QL 联接查询

    需要 Couchbase 环境中的查询帮助 文档1和文档2都在同一个桶中 首先 查询将使用以下查询获取文档 message1 SELECT uid message sent by FROM bucket USE KEYS message1
  • docker 上的 couchbase 配置

    你好 我对 Docker 很陌生 我想在 couchbase 中进行一些初始配置 如下所示 创建一个桶 设置管理员密码 我想自动化这两个过程 因为 当我第一次在 docker 上运行 couchbase db docker compose
  • 如何使用CURL/CygWin将文件从本地Windows机器发送到服务器?

    我的目标是使用 cygwin curl 将 CouchDB 文档从我的 Windows 计算机上传到远程服务器 以下教程展示了如何在 Mac 上执行相同操作 http net tutsplus com tutorials getting s
  • 本地实例不支持 couchdb POST 方法

    我的本地 couchdb 实例似乎不支持 POST 方法 这是我从 chrome 开发工具得到的答案 POST http localhost 5984 epos couch design epos couch view ri 415 Uns
  • 具有多个键值的 CouchDB 视图查询

    我目前正在尝试创建一个视图和查询来适应此 SQL 查询 SELECT FROM articles WHERE articles location NY OR articles location CA ORDER BY articles re
  • CouchDB复制忽略零星文档

    我的应用程序有一个 CouchDB 设置 CouchDB 2 1 1 它在很大程度上依赖于复制完整性 我们使用 每个用户一个数据库 方法 并附加一层 角色 db s 将用户分组 如下图所示 最近 在增加测试人员数量的同时 我们发现一些文档没
  • 库存管理系统的 SQL 与 NoSQL

    我正在开发一个基于 JAVA 的网络应用程序 主要目的是拥有在多个称为渠道的网站上销售的产品的库存 我们将担任所有这些渠道的管理者 我们需要的是 用于管理每个渠道的库存更新的队列 库存表 其中包含每个通道上分配的正确快照 将会话 ID 和其
  • 检索 Couchbase 的所有记录(文档)

    我正在使用 node js 并寻找一种方法来获取特定的 couchbase 桶的所有文档 有没有没有循环和增量索引的解决方案 我知道我可以制作一个原子键 然后通过循环使用它来检索所有数据 但我需要一个返回所有文档的函数 是否有任何函数 至少
  • 如何防止 CouchDB 在更新简单计数器时创建文档修订

    我想将计数器存储在 CouchDB 文档中 并在每个页面视图上递增 CouchDB 将创建本文档的完整修订版 只需 1 次计数器更新 这样会不会占用太多空间 考虑到我一天的点击量为 100 万次 我一天内可能会查看该文档的 100 万次修订
  • 用户如何登录定义了读者角色的 couchapp?

    我通过 Couchapp 部署了我的应用程序 这意味着整个应用程序是从数据库中提供服务的 我不希望 Couchdb 数据库中的数据公开可用 因此我指定了用户在向他提供数据之前必须具有的读者角色 然而 当我去申请时 我所能得到的是 error
  • 如何使用c#从数据桶中获取所有文档?

    如何获取数据桶中的所有文档 我尝试过一个示例 但我只能获得一个特定的文档 这是我的代码 CouchbaseClient oclient oclient new CouchbaseClient vwspace data bucket name
  • 如何在android中安装和使用couch db

    我应该如何在 android 中安装和使用 couch Db 我的意思是本地沙发数据库 我可以在平板电脑和模拟器中使用它 为此我必须遵循哪些步骤 我目前正在开发一个使用它的项目 有两种选择 1 couchbase android 是的 co
  • 如何导入 nano (couchdb) - typescript

    我在节点应用程序中导入和使用 nano 时遇到问题 js 方式 来自文档 是 var nano require nano http localhost 5984 我该如何用打字稿做到这一点 I tried import as Nano fr
  • 对如何在 Android 上使用 CouchDB 感到困惑

    我想让 CouchDB 作为我的移动应用程序的后端运行 取代 SQlite 作为这项技术的新手 我一直感到非常困惑 因为除了去年 Couchbase 发布的所有听起来类似的产品 Couchbase Couchbase Single Serv
  • 清理 couchdb 并重新启动

    清理命令是什么CouchDB请 如果我想disable and re start我的CouchDB命令是什么 Thanks CouchDB 可以从以下位置启动 停止 重新启动 etc init d couchdb or etc rc d c

随机推荐

  • 使用 pandas 数据框进行线性回归

    我在 pandas 中有一个数据框 我用它来生成散点图 并且想要包含该图的回归线 现在我正在尝试用 polyfit 来做到这一点 这是我的代码 import pandas as pd import matplotlib import mat
  • 带有命名参数的 php sqlsrv_query 存储过程

    我使用 php 5 4 和 sqlsrv 扩展 我试图调用这个示例存储过程 NorthWind 数据库 create PROCEDURE dbo GetCategories CategoryID int null AS SELECT fro
  • 使用 HTML、javascript 和 jQuery 通过 Ajax 请求将图像上传到 Amazon s3(无 PHP)

    我正在用 HTML javascript 和 jQuery 开发一个网站 我想通过 ajax 请求将图像上传到亚马逊 s3 服务器 没有这样的 SDK 将 s3 集成到 Javascript 中 PHP SDK 可用 但对我来说没有用 有人
  • 非线性合并后如何恢复线性git历史记录?

    几次提交前 我不小心在我的主分支中进行了非线性合并 我有一个习惯 总是试图保持线性历史 所以现在我想恢复线性 我制作了一个虚拟存储库 它模拟了我所遇到的真实情况 目的是使事情变得更简单 这是它的 GitHub 链接 https github
  • AccountManager 未在 Android N 预览版中添加自定义帐户

    我在我的应用程序中实现了一个同步适配器 它需要在设备帐户设置中添加一个帐户 我遵循 Android 文档中给出的相同方法 它工作正常 直到 Marshmallow 和我可以看到我的帐户列在设备帐户中 但在 Android N 预览版中 帐户
  • 为什么 Visual Studio 2010 在 Boost 1.42.0 中抛出此错误?

    我正在尝试重新编译应用程序 该应用程序在 Visual Studio 2005 和 Visual Studio 2008 中编译良好 警告级别 4 由于错误 如下所示 来自 std tr1 我认为存在一些冲突 但不确定如何修复 我的第一个想
  • gradle错误找不到方法dependencyManagement()

    下面是我的 build gradle buildscript ext springBootVersion 2 0 0 M3 dependencies classpath org springframework boot spring boo
  • 运行 Ansible playbook 时出现 UNREACHABLE 错误

    我确实可以通过 ssh 访问目标计算机 并且它可以工作 但是每当我运行此剧本时 我都会收到以下错误输出 sudo ansible playbook ansible playbook test yml PLAY openstack TASK
  • 如何在 vue bootstrap 中启用悬停下拉菜单?

    div div
  • 事件处理程序为空

    我正在尝试从用户控件引发单击事件并在包含页面上处理它 我遇到的问题是 当我单击用户控件上的按钮 imgstep1 时 imgstep1 click 事件后面的代码会触发 但 btnHandler 事件始终为空 因此它不会调用父事件 对此的任
  • C# 与 C++ 等效的空合并运算符

    C 空合并运算符是否有 C 等效项 我在代码中做了太多空检查 因此正在寻找一种减少空代码量的方法 我刚刚发现这个 这 运算符又名空合并运算符 http dev tricks net the operator aka null coalesc
  • 如果 C 有指针,为什么还需要数组?

    如果我们可以使用指针malloc创建和使用数组 为什么C中存在数组类型 如果我们可以使用指针来代替 那不是没有必要了吗 数组比动态内存分配更快 数组在 编译时 分配 而 malloc 在运行时分配 分配需要时间 另外 C 并没有强制要求ma
  • Java 8方法引用:提供能够提供参数化结果的Supplier

    我想用 java util Optional orElseThrow 具有要求构造函数参数的异常类型 像这样的事情 orElseThrow MyException new someArgument obviously NOT working
  • 从 C 文本文件中读取 int 值

    我有一个包含以下三行的文本文件 12 5 6 4 2 7 9 我可以使用fscanf函数读取前 3 个值并将它们存储在 3 个变量中 但我无法阅读其余部分 我尝试使用fseek函数 但它仅适用于二进制文件 请帮助我将所有值存储在整数变量中
  • 在 C# 中使用“dynamic”关键字无法编译

    我正在尝试编译一段 C 代码 其中包含dynamic关键词 我需要这个关键字来使用ironpython 但是 它无法编译 抱怨 error CS1980 Dynamic keyword requires System Runtime Com
  • 什么是 Nak 限制?

    我试图了解 Android Open Accessory API 如何与 Arduino ADK 板配合使用 我已经能够发送和接收信息 但我只想知道一切是如何工作的 我得到了这个函数的描述 int AndroidAccessory read
  • 错误测试应用内结算示例 - Dungeons

    我正在尝试获取应用程序内计费示例地下城 我有一个带有我的公共 ID 的草稿应用程序 并且我已经发布了非托管项目 potion 001 我在设备上使用与注册商家帐户相同的谷歌帐户 静态测试效果很好 但是当我尝试购买药水时 我得到 DEBUG
  • VBA中的数字上下控制

    vba 中是否有内置的数字 updown 控件 或者我们是否需要创建一个类似的控件 如果有这样的控件那么我们可以使用哪些事件 请建议 您可以使用SpinButton1对此进行控制 SNAPSHOT CODE 您可以设置最小值和最大值Spin
  • 从列表更新选项菜单

    我的 GUI 中有一个 OptionMenu 它由一个列表填充 每次用户运行某个进程时 列表都会更新以反映这一点 有没有办法根据列表更新选项菜单 我试过了self plotWindow update as per 这个问题 https st
  • 如何将现有数据保留在 couchbase 中并且仅更新新数据而不覆盖

    因此 假设我在存储桶下创建了一些记录 文档 并且用户仅更新 RDBMS 中 10 列中的一列 因此我尝试仅发送该一列数据并在 couchbase 中更新它 但问题是 couchbase 会覆盖整个记录并为其余列设置 NULL 一种方法是从