在Couchbase中更新高度嵌套的文档

时间:2018-12-25 12:34:02

标签: mysql database nosql couchbase n1ql

我有一个包含多个层次结构的文档。像这样:

{
  "id": "520707438",
  "pageURIHash": "3988665684",
  "children": [],
  "parentId": null,
  "content": "Here is a parent comment"
}

children数组可能具有其他子注释作为JSON对象,每个子注释又可能具有其他子注释。因此,这形成了一个高度嵌套的结构。

现在,假设我想在带有ID作为123456745的注释中添加子注释。我假设我知道根级别的注释(以便可以在我的USE KEYS查询中使用N1ql子句)。如何提取与具有该特定ID的注释相对应的children数组,并为其添加新注释?我可以使用子文档API,但是它要求我知道路径,在这种情况下,我不知道它。

我做了一些研究,并提出了以下查询:

"UPDATE default d use keys \"" + comment.getRootCommentId()
           + "\" SET (??? How do I get the existing array and append to it) FOR p WITHIN d.children WHEN p.id = \"" + comment.getId() + "\" END";

非常感谢!

1 个答案:

答案 0 :(得分:3)

这应该做您想要的:

declare sample_table table ([values] varchar(100))

insert into @sample_table 
select distinct t1.value 
from my_tablw as t1 

--one way to use it
select *
from newTable 
where columnVal in (select * from @sample_table)

--another way to use it
select at.* 
from anotherTable at
inner join @sample_table t on
t.column = at.column

--and another way...
select f.*
from finalTable f
where exists (select * from @sample_table t where t.column = f.column)