Как обновить схему в couchbase

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

    user1:{
emails:['email1', 'email2']
}

требуется

    user1:{
emails:[{email:'email1', is_active:1}, {email:'email2', is_active:1}]
}

Мы можем сделать это, создав функцию с циклами в программе, но я хочу сделать это, написав запрос

1 ответ

(Ваши образцы документов не совсем соответствуют JSON, поэтому я сделал несколько предположений)

Я создал документ (с ключом user1 в контейнере с именем stackru) следующим образом:

{
   "emails": ["email1", "email2"]
}

Затем я побежал UPDATE с использованием ARRAY синтаксис ( задокументированный здесь):

UPDATE `stackru`
SET emails = ARRAY {"email": v, "is_active": 1} FOR v IN emails END;

Итоговый документ:

{
  "emails": [
    {
      "email": "email1",
      "is_active": 1
    },
    {
      "email": "email2",
      "is_active": 1
    }
  ]
}

Будьте осторожны, если вы хотите запустить это несколько раз. Возможно, вы захотите временно поместить результаты в поле, например "emails_new", вместо того, чтобы перезаписывать "электронные письма", пока они не будут работать так, как вы хотите.

Другие вопросы по тегам