Как перебирать записи в Couchbase, используя функции или операторы - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть два ведра в моей группе диванов.Я хочу перебрать все jsonDocuments, присутствующие в bucket2, для каждого jsonDocument в bucket1, и я хочу объединить выбранные поля из 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 содержит 100 тыс. Записей.Мне также интересно выполнить эту операцию в разбивке по страницам.

Мне нужна строка запроса couchbase для выполнения вышеуказанных операций.

Любые предложения действительно приветствуются.

1 Ответ

0 голосов
/ 21 февраля 2019

Если вы хотите сделать это непосредственно из 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

...