Couchbase N1QL查询:筛选numbers数组末尾元素匹配指定值的记录
匹配数组最后一个元素的N1QL查询实现
核心逻辑
N1QL 数组下标从 0 开始计数,你可以通过ARRAY_LENGTH()函数获取数组长度后减1,即可定位到数组的最后一个元素。
基础查询语句
替换示例中的your_bucket为你的实际桶名,target_value为你要匹配的指定数值即可使用:
SELECT * FROM `your_bucket` WHERE -- 先判断数组非空,避免下标为-1导致异常 ARRAY_LENGTH(data.numbers) > 0 AND data.numbers[ARRAY_LENGTH(data.numbers) - 1] = target_value;
性能优化建议
如果该查询是业务高频查询,建议创建对应表达式索引提升查询效率:
CREATE INDEX idx_data_numbers_last ON `your_bucket`(data.numbers[ARRAY_LENGTH(data.numbers) - 1]) WHERE ARRAY_LENGTH(data.numbers) > 0;
内容的提问来源于stack exchange,提问作者mac
相关产品推荐
相关产品推荐

