在 couchbase 上为 ARRAY_REMOVE 创建索引
create index on couchbase for ARRAY_REMOVE
我想执行这个查询:
UPDATE `bucket` SET etats= ARRAY_REMOVE( etats, etats[2])
我的问题是如何创建一个索引来执行这个查询,我不想使用
主要索引沙发底座。
查询的目标是从数组 '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 default (DISTINCT ARRAY v.code FOR v IN etats END) WHERE etatType = "type1";
UPDATE default AS d
SET d.etats = ARRAY v FOR v IN d.etats WHEN v.code != "code2" END
WHERE d.etatType = "type1" AND ANY v IN d.etats SATISFIES v.code = "code2" END;
如果您真的只想为您的查询建立索引。
CREATE INDEX ix1 ON `bucket` (etatType);
UPDATE `bucket` SET etats= ARRAY_REMOVE( etats, etats[2])
WHERE etatType = "type1";
我想执行这个查询:
UPDATE `bucket` SET etats= ARRAY_REMOVE( etats, etats[2])
我的问题是如何创建一个索引来执行这个查询,我不想使用
主要索引沙发底座。
查询的目标是从数组 '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 default (DISTINCT ARRAY v.code FOR v IN etats END) WHERE etatType = "type1";
UPDATE default AS d
SET d.etats = ARRAY v FOR v IN d.etats WHEN v.code != "code2" END
WHERE d.etatType = "type1" AND ANY v IN d.etats SATISFIES v.code = "code2" END;
如果您真的只想为您的查询建立索引。
CREATE INDEX ix1 ON `bucket` (etatType);
UPDATE `bucket` SET etats= ARRAY_REMOVE( etats, etats[2])
WHERE etatType = "type1";