Как добавить новое поле в документ Couchbase с помощью GO SDK

Приведенная ниже структура регистра фиксирует данные, поступающие из пользовательского интерфейса регистрации:

register struct {
   Email string
   Password string }

Команда collection.insert создает следующий документ:

{  "id": "1",
   "email" : "[email protected]",
   "password" : "pwd"
}

Структура demographics собирает данные, поступающие из пользовательского интерфейса Demographics:

demographics struct {
    Name string
   Address string
}

Я хочу обновить документ, чтобы результирующий документ выглядел следующим образом:

 { "id": "1",
      "email" : "[email protected]",
      "password": "pwd",
      "name" : "John Doe",
      "address" : "100 Main Street"
    }

Используя N1QL, я мог бы написать следующее:

Update bucket set name="John Doe", address="100 Main Street" where id="1"

Мне не удалось найти API обновления в GO SDK.


person Tusshu    schedule 26.01.2020    source источник


Ответы (1)


Я не разработчик Go, но я думаю, что то, что вы ищете, называется "вложенные документы" в Couchbase (и это доступно во всех Couchbase SDK, включая Go)

То есть возможность вставлять/обновлять/удалять части документа, не перемещая его целиком по сети. Например, вот фрагмент для добавления поля «факс» в документ (upsert создает или заменяет поле по мере необходимости):

bucket.MutateIn("customer123", 0, 0).Upsert("fax", "311-555-0151", true).Execute()

Есть много вариантов вложенных документов: вставка, замена, существует, добавление массива, добавление массива и т. д.

person Matthew Groves    schedule 27.01.2020
comment
Большой! Рад, что у тебя получилось. Добавление Go в мое резюме сейчас :-P - person Matthew Groves; 28.01.2020