如何使用函数或运算符迭代Couchbase中的记录

问题描述 投票:3回答:1

我在我的couchbase集群中有两个桶。我想为bucket1中的每个jsonDocument迭代bucket2中存在的所有jsonDocuments,我想使用一些逻辑将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查询字符串来执行上述操作。

任何建议都非常感谢。

couchbase n1ql
1个回答
2
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.