如何将现有数据保留在 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 中并且仅更新新数据而不覆盖 的相关文章

  • Couchbase 从范围内的所有集合中检索所有文档

    是否可以在没有 N1QL 查询的情况下从某个范围内的所有集合中检索所有文档 由于数据量巨大 我们试图避免创建索引 因此无法执行 N1QL 放置此类数据的集群是归档存储 不会被频繁访问 新的 KV 范围扫描功能将执行此操作 scan 方法 h
  • CouchDB 与 RDBMS 相比有何优势

    我听说过很多关于couchdb http couchdb apache org 最近 我对它提供的功能感到困惑 很难以严格的优势 劣势形式解释所有差异 我建议你自己尝试一下 CouchDB 您首先会注意到的是 初始使用期间的学习曲线与 RD
  • 解决 Pouch Couch DB

    我正在开发一个离线工作的原型网站 该网站利用 Pouch DB 以便在上线时同步回服务器上的 CouchDB The Pouch DB 冲突指南 http pouchdb com guides conflicts html says 要解决
  • Couchbase 中的存储桶密码

    我正在创建一个使用 springboot 和 Couchbase 进行反应式编程的演示项目 我在 application properties 文件中设置了以下属性 spring couchbase bootstrap hosts loca
  • Tomcat 使用 Jersey Jax-RS 在单个服务器上每秒执行 15K 请求

    我尝试在 VPS 上进行测试 每秒接近 10K 请求 这是一个simple hello world servlet 更不用说调用 membase 了 我的 VPS 是 2 个 Intel Xeon X5570 四核 Nehalem 架构 注
  • 使用 Node.js 从 couchdb 检索所有文档

    我正在编写一个简单的测试应用程序来试验 node js 和 couchdb 的功能 到目前为止我很喜欢它 但我遇到了障碍 我已经广泛寻找 但似乎找不到答案 我的测试服务器 一个简单的地址簿 做了两件事 如果用户去localhost 8000
  • 如何在 couchdb 中索引多维数组

    我有一个多维数组 我想用 CouchDB 对其进行索引 实际上使用 Cloudant 我的用户有他们所属团队的列表 我想搜索找到该团队的每个成员 因此 获取所有具有 ID 为 79d25d41d991890350af672e0b76faed
  • 在loudant搜索索引中添加功能

    我在 cloudant 中有一个 Json 文档 id 3 f812228f45b5f4e4962505561953ew245 rev 3 f812228f45b5f4e496250556195372b2 wiki page http en
  • 有人可以解释一下 Ektorp 中的 Cascading 和 FetchType 惰性吗?

    我是 CouchDB 和 Ektorp 的新手 实际上我今天就开始尝试使用它 我找到的帮助我入门的最详细的文档是这个 http www ektorp org reference documentation html d100e394 htt
  • Couchbase 的 Twisted API 无法与 Python Tornado 一起使用

    我正在尝试使用 Couchbase 4 0 开发人员预览版运行 Tornado 服务器 import tornado web import tornado httpserver import tornado options import t
  • 有没有集成CouchDb和Solr的项目?

    我希望能够使用 Solr 搜索 CouchDB 数据库 有没有提供这样的集成的项目 我还知道 CouchDB Lucene 有没有办法让 Solr 融入其中 Thanks 考虑到它是多么容易 自己推出会更有意义 首先 您需要决定使用哪种 S
  • CouchDB 和 Couchbase 有什么区别?

    之间有什么本质区别吗CouchDB http couchdb apache org and 沙发底座 http www couchbase com 我认为CouchDB和Couchbase Server之间有一些本质的区别需要指出 我不会写
  • Couchbase N1QL 联接查询

    需要 Couchbase 环境中的查询帮助 文档1和文档2都在同一个桶中 首先 查询将使用以下查询获取文档 message1 SELECT uid message sent by FROM bucket USE KEYS message1
  • Couchbase 和 Spring 查询错误:“返回原始类型的查询预计返回 1 个结果,得到 X”

    In our spring boot 2 0 4 RELEASE应用程序 我们正在使用Couchbase version 5 5 1 build 3511 with Spring 我们在 Repository 接口中添加了一个新的删除方法
  • 零部署 CouchDB 嵌入 Windows 应用程序?

    我可能在这里做梦 但我想知道是否有可能将最小的 CouchDB 引擎完全嵌入到 Windows 应用程序中 以便该应用程序可以运行而无需在用户计算机上安装 CouchDB Erlang 我已经提供了这种精简 捆绑的功能 请在此处查看http
  • CouchDb 单个文档的大小限制是多少

    我对文档存储复杂的数据结构有疑问 该数据结构可能会有所不同 文档需要完整存储和检索 需要提供文档搜索字段 我开始在 MongoBb 中存储文档 但那里的文档大小限制为 16 MB 这对我来说不够 CouchDb 允许的单个文档的最大大小是多
  • 库存管理系统的 SQL 与 NoSQL

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

    我正在读这篇文章https cloudant com blog mango json vs text indexes https cloudant com blog mango json vs text indexes我想在我的 Couch
  • couchdb读取身份验证

    我如何处理 couchdb 中的读取身份验证 我知道角色可以在单独的数据库中定义 但我想在文档级别实现读取身份验证 我正在考虑使用node js 但它似乎不是一个优雅的解决方案 因为couchdb也有一个http服务器 我不想再添加一个 或
  • CouchDB 中的分页?

    我将如何实现分页所需的查询 基本上 当请求第 1 页时 获取前 5 个条目 对于第 2 页 获取接下来的 5 页 依此类推 我计划通过 couchdb python 模块使用它 但这不会对实现产生任何影响 The CouchDB 指南 ht

随机推荐

  • 使用 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 一种方法是从