如何使用功能或操作员在Couchbase中迭代记录



我的scouchbase群集中有两个水桶。我想迭代Bucket1中每个jsondocument中存在的所有jsondocument,我想使用某些逻辑从bucket1合并到bucket2中。

以下是伪步骤

for(JsonDocument inDoc: bucket1Docs) {
    for(JsonDocument outDoc: bucket2Docs) {
        JsonObject obj = outDoc.content();
        // After some arithmetic calculations
        obj.put(inDoc.content().get("key1"));
         bucket2.upsert(JsonDocument.create(key, obj));
    }
}

注意:Bucket2包含100K记录。我也有兴趣以分页的方式进行此操作。

我需要一个Couchbase查询字符串来执行上述操作。

任何建议都非常感谢。

如果要直接从N1QL进行此操作,则可以使用此语句:

upsert into bucket2 (KEY original_id, VALUE original_doc) 
    select meta().id original_id, b original_doc from bucket1 b

如果您想进行一些更复杂的合并,以防现有文档已经存在,请查看合并语句:https://docs.couchbase.com/server/6.0/n1ql/n1ql-language-reference/merge.html

如果要将两个对象的值组合为一个,则object_concat()函数也可能有用。https://docs.couchbase.com/server/6.0/n1ql/n1ql/n1ql-language-reference/objectfun.html#object_concat

最新更新