如何通过SDK更新Couchbase中的数组

时间:2019-03-22 17:38:32

标签: couchbase

查看了文档,想知道是否有一种方法可以直接更新数组中的文档。我只找到Append,Prepend和Insert,现在我的解决方法是

 bucket
  .mutateIn(docID)
  .remove(path + "[" +index +"]")
  .arrayInsert(path +"[" +index +"]", doc)
  .execute((err, result) => {}

这是可行的,但我怀疑理想,因为在我的情况下它会导致2次操作,实际上我必须在文档上进行3次操作 在我可以删除并再次插入之前,此文档在数组中的索引

2 个答案:

答案 0 :(得分:1)

有一个名为replace的{​​{3}}命令,允许更新元素。

 bucket
  .mutateIn(docID)
  .replace(path + "[" +index +"]", doc)
  .execute((err, result) => {}

答案 1 :(得分:0)

看起来SDK中缺少此方法,我将为其打开一个票证。同时,您也可以通过ARRAY_REMOVE或ARRAY_REPLACE(tks to vsr)使用N1QL

https://docs.couchbase.com/server/6.0/n1ql/n1ql-language-reference/arrayfun.html#fn-array-remove