gpt4 book ai didi

arrays - Couchbase:在包含对象数组的数组上创建索引

转载 作者:行者123 更新时间:2023-12-02 18:14:14 24 4
gpt4 key购买 nike

我正在尝试在以下结构上创建索引:


"creators": [
{
"ag_name": "Travel",
"ag_ids": [
{
"id": "1234",
"type": "TEST"
}
]
}
]

我创建的索引如下:

CREATE INDEX `Test_Index` ON `bucket`((ARRAY(ARRAY [t.ag_name, v] FOR v IN OBJECT_VALUES(t.`ag_ids`) END) FOR t IN `indexed_data`.`pos` END))
WHERE ((SUBSTR0((META().`id`), 0, 2) = "tt") AND (`indexed_data` IS VALUED))

问题

我几个小时前开始使用 couchbase。我想知道。我创建的索引是否正确?我的意思是它正在成功创建。但是我不确定它是否涵盖了所有字段,包括子结构数组中的字段


查询

SELECT META().id
FROM bucket
WHERE SUBSTR0((META().`id`), 0, 2) = "tt"
AND indexed_data.reservation_type = "HOLA"
AND chain_code="FOO1"
AND indexed_data.property_code="BAR1"
AND ANY creator IN indexed_data.creators SATISFIES creator.ag_name="FOO" END
AND ANY creator IN indexed_data.creators SATISFIES (ANY ag in creator.ag_ids SATISFIES ag.id="1234" END AND ANY ag in creator.ag_ids SATISFIES ag.type="TEST" END) END

最佳答案

以上查询的唯一方法是可以覆盖整个索引 indexed_data.creators ARRAY。示例 1 https://docs.couchbase.com/server/current/n1ql/n1ql-language-reference/indexing-arrays.html#covering-array-index .您还可以为 ARRAY 中的字段之一创建 ARRAY 索引。当您引用数组中的多个字段时,您将无法使用上述链接中描述的隐式覆盖数组索引

CREATE INDEX ix1 ON bucket (chain_code,indexed_data.reservation_type, indexed_data.property_code,  indexed_data.creators ) 
WHERE SUBSTR0((META().`id`), 0, 2) = "tt";

您还对同一 ARRAY 的多个 ANY 子句执行 AND。即意味着它可以与数组中的任何位置匹配如果需要相同的位置都匹配你应该使用以下查询。

SELECT META().id
FROM bucket
WHERE SUBSTR0((META().`id`), 0, 2) = "tt"
AND indexed_data.reservation_type = "HOLA"
AND chain_code="FOO1"
AND indexed_data.property_code="BAR1"
AND (ANY c IN indexed_data.creators
SATISFIES c.ag_name = "FOO"
AND (ANY ag IN c.ag_ids
SATISFIES ag.id = "1234" AND ag.type = "TEST"
END)
END);

关于arrays - Couchbase:在包含对象数组的数组上创建索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71843915/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com