【问题标题】:Couchbase not setting new attributes to all documentsCouchbase 未为所有文档设置新属性
【发布时间】:2019-08-08 11:55:35
【问题描述】:

我有一桶 50k 条记录在生产中。我应该为所有文档添加一个新属性。为此,我正在通过 Web 控制台查询工作台执行以下查询。

select count(*) from my-bucket where orderType is missing; --50k 记录

update my-bucket set orderType = “MY_ORDER” where orderType is missing;——突变=49950

问题 1:Couchbase 没有选择我所有的文档进行突变。

问题 2:更新后,当我再次尝试查找 缺少新属性的文档,继续计数 增加。

select count( * ) from my-bucket where orderType is missing; --100 条记录

select count( * ) from my-bucket where orderType is missing; --200 条记录

select count( * ) from my-bucket where orderType is missing; --350 条记录

谁能解释一下这个问题的原因以及解决方法。我们在实时生产环境中运行这些查询。

Couchbase 服务器版本:社区版 5.1

【问题讨论】:

  • 这里有一个愚蠢的问题,文档不是在增加,因为您还没有在生产环境中部署具有此新属性的应用程序的新版本吗?
  • 没有。整个时间桶的总数保持不变。
  • 此外,此问题已自行解决。我们唯一可能的解释是,一些作业在后台运行,这个问题是由于并发修改造成的。
  • 在社区版中,N1QL 引擎是单线程的,因此该 UPDATE 语句可能需要一些时间才能完成。

标签: couchbase


【解决方案1】:

尝试从缺少 orderType 的 my_bucket 中选择 count(meta().id)。显然 count(*) 不能与 couchbase 中的 where 子句一起正常工作

【讨论】:

  • 我们已经能够在其中一台测试服务器上使用 count (*) 执行这些查询。该问题仅出现在产品服务器上。此外,我们尝试在没有任何 where 子句的情况下更新存储桶。然后尝试 select count(meta().id) 并且计数像之前一样继续增加。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-29
  • 2018-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多