gpt4 book ai didi

couchbase - 使用 N1QL 查询同步网关桶

转载 作者:行者123 更新时间:2023-12-01 00:42:07 25 4
gpt4 key购买 nike

我想知道是否可以使用 N1QL 查询同步网关存储桶?它的行为是否像一个普通的沙发基桶,还是因为同步网关添加了元数据,是否可以仅通过 Rest API 查询它?

目前我有一个 webhooks 处理程序,它保留了位于同步网关存储桶下的文档副本。我需要做一些需要推回给客户的聚合。那么,我可以通过同步网关上的 n1ql 直接完成所有这些繁重的工作,还是使用 webhooks 进行聚合并简单地将更新的文档推送到同步网关是正确的选择?

PS:webhooks+Rest APIS 选项目前非常适合我。只是想了解这跳是否有必要?

最佳答案

是的,可以使用 N1QL 查询同步网关 - 您不能更改它(更新/删除/插入),因为它会破坏修订的元数据。

您需要忽略 ID 以 _sync: 开头的文档。和 _sync每个文档的属性,其中包含内部元数据。其余属性是您常用的文档。

例子:

select db.* from db where meta().id not like '_sync:%'

结果:

[
{
"_sync": {
"history": {
"channels": [
null,
null
],
"parents": [
-1,
0
],
"revs": [
"1-b7a15ec4afbb8c4d95e2e897d0ec0a2e",
"2-919b17d3f418100df7298a12ef2a84bb"
]
},
"recent_sequences": [
6,
7
],
"rev": "2-919b17d3f418100df7298a12ef2a84bb",
"sequence": 7,
"time_saved": "2016-05-04T18:54:26.952202911Z"
},
"name": "Document with two revisions"
}
]

忽略 _sync属性:

select name from db where meta().id not like '_sync:%'

结果:

[
{
"name": "Document with two revisions"
}
]

在 Couchbase 4.5(截至今天的 BETA)中,我们可以使用 object_remove函数 - 尽管我会避免使用它以支持以前更明确的语法。

select object_remove(db, '_sync') from db where meta().id not like '_sync:%'

结果:

[
{
"$1": {
"name": "Document with two revisions"
}
}
]

我不知道您当前的设置是什么,但是 AFAIK,在使用 REST API 进行数据更改的同时通过 N1QL 继续查询存储桶是完全没问题的。

关于couchbase - 使用 N1QL 查询同步网关桶,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36871589/

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