首页 > 解决方案 > Couchbase 中不区分大小写的文档 ID 匹配

问题描述

com.couchbase.client在 java spring 项目中使用 maven 依赖项。我通过以下方式从代码中获取 couchbase 文档:

JsonDocument document = bucket.get(id); //matches id case sensitively

但我有一个新的要求。我必须根据id的不区分大小写匹配来获取文档。

例如:假设 couchbase 有一个带有 id 的文档heLLo_Doc

当我执行时,我希望返回bucket.get("hello_doc")带有 id 的文档。heLLo_Doc如果有多个文档具有相同的小写 ID(例如:Hello_DochEllo_doc),我需要获取所有这些文档。

couchbase 有没有提供任何方法来做到这一点?

最糟糕的方法是搜索我不想做的所有可能性。

标签: javadatabasecouchbasespring-data-couchbasecouchbase-java-api

解决方案


如果你想使用 N1QL。您需要在文档键上创建功能索引

CREATE INDEX ix1 ON default(LOWER(META().id));
SELECT * FROM default WHERE LOWER(META().id) = "hello_doc";

或者

SELECT META().id FROM default WHERE LOWER(META().id) = "hello_doc";
The second query gives actual document keys then you can pass this to your existing bucket.get() call too.

推荐阅读