gpt4 book ai didi

Couchbase - 获取所有文档前缀

转载 作者:行者123 更新时间:2023-12-01 23:16:53 25 4
gpt4 key购买 nike

我们有一个相当大的 couchbase 存储桶,其中包含多种文档类型,由文档前缀表示。例如,我们有一些文档以device---[document name]为前缀,一些以market---[document name]为前缀。我想要所有现有前缀的列表。到目前为止,这是我尝试过的:

select split(meta().id, "---")[0] as doc_type
from configs
group by doc_type;

我希望它返回类似的东西

[
{
"doc_type": "device"
},
{
"doc_type": "market"
},
]

它失败了

"code": 4210, 
"msg": "Expression must be a group key or aggregate: (split((meta(`docsis_configs`).`id`), \"---\")[0])",

我不确定如何解决聚合问题并尝试了各种方法。但是我怀疑即使我让它工作,这个查询也会非常低效。有人可以帮我聚合吗?有没有更聪明的方法来做到这一点?或者这样可以吗?

最佳答案

您还可以使用下面的事件服务,这是一些简单的代码,可以为每个唯一的前缀创建一个计数器文档。这将为您拥有的每个文档更新一个计数器。

注意 dst_bkt 是一个桶,在 r+w 模式下绑定(bind)到另一个桶,这个桶应该开始是空的,它会得到一个包含计数的每个前缀的文档。

这也可以在没有和索引的情况下工作。

function OnUpdate(doc, meta) {
var pfx = meta.id.split("---");
if (!pfx[1]) return; // bad key so return and skip
couchbase.increment(dst_bkt,{"id": pfx[0] });
}

请注意,如果您只想将其作为一次性工具运行(无计数),则有一个非标准的 hack 可以显着提高性能,如果有兴趣请私信我。

关于Couchbase - 获取所有文档前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68687246/

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