首页 > 解决方案 > 如何从 N1QL 中的数组中删除元素

问题描述

我是 N1QL 的新手,我想从数组中删除匹配的字符串。

这是我需要的称为检查的数组:

 "job_1": {
    "inspection": ['11','22','33','44'] //This is Array
  },
  "job_2": {
    "inspection": ['22','33','44'] //This is Array
  },
  "job_3": {
    "inspection": ['11','22'] //This is Array
  }

我想从位于每个作业内的所有 3 个数组中删除“22”(我想删除的值可能不存在于检查数组中):

我如何使用删除查询删除它,有人可以帮我查询吗?

先感谢您!

标签: jsoncouchbasen1ql

解决方案


使用 WHERE 子句更新具有所需值的文档。之后使用 ARRAY 构造来形成新的 ARRAY 并分配它。您还可以使用 ARRAY 函数。

UPDATE default AS d
SET d.inspection = ARRAY v FOR v IN d.inspection WHEN v != "22" END
WHERE "22" IN d.inspection;

或者

UPDATE default AS d
SET d.inspection = ARRAY v FOR v IN d.inspection WHEN v != "22" END
WHERE ANY v IN d.inspection SATISFIES v = "22" END;

参考

https://blog.couchbase.com/working-json-arrays-n1ql/ https://docs.couchbase.com/server/current/n1ql/n1ql-language-reference/indexing-arrays.html https://docs .couchbase.com/server/current/n1ql/n1ql-language-reference/update.html https://docs.couchbase.com/server/current/n1ql/n1ql-language-reference/arrayfun.html


推荐阅读