在couchbase上为数组创建索引

在couchbase上为数组创建索引,couchbase,n1ql,Couchbase,N1ql,我要执行此查询: UPDATE `bucket` SET etats= ARRAY_REMOVE( etats, etats[2]) 我的问题是如何创建一个索引来执行这个查询,我不想使用 主索引couchbase 查询的目标是从数组“etats”中删除元素 文件示例: { "lastUpdateTime": "2019-03-31T22:02:00.164", "origin": "origin1", "etats": [ { "dateTime": "2019

我要执行此查询:

UPDATE `bucket` SET etats= ARRAY_REMOVE( etats, etats[2])
我的问题是如何创建一个索引来执行这个查询,我不想使用

主索引couchbase

查询的目标是从数组“etats”中删除元素

文件示例:

{
  "lastUpdateTime": "2019-03-31T22:02:00.164",
  "origin": "origin1",
  "etats": [
    {
      "dateTime": "2019-03-28T17:13:49.766",
      "etat": "etat1",
      "code": "code1"
    },
    {
      "dateTime": "2019-03-29T15:26:48.577",
      "etat": "etat2",
      "code": "code2"
    },
    {
      "dateTime": "2019-03-31T22:01:59.843",
      "etat": "etat3",
      "code": "code3"
    }
  ],
  "etatType": "type1"
}

必须有WHERE子句来选择索引,否则唯一的选项是主索引。 一般情况下,如果存在元素,则只更新字段。 以下查询从具有代码值“code2”的数组中删除对象

如果您确实只想为查询创建索引

CREATE INDEX ix1 ON  `bucket` (etatType);

UPDATE `bucket` SET etats= ARRAY_REMOVE( etats, etats[2])
WHERE etatType = "type1";

你能提供一两个文档的例子吗?而且,这个查询似乎是为了影响bucket中的每个文档而设计的,所以我不确定索引会有多大帮助。@MatthewGroves请找一个文档的例子,我编辑了这篇文章
CREATE INDEX ix1 ON  `bucket` (etatType);

UPDATE `bucket` SET etats= ARRAY_REMOVE( etats, etats[2])
WHERE etatType = "type1";