Search code examples
couchbasesql++

Upsert into sub document in couchbase using N1QL


I have document like below in couchbase.

{
  "templateType": "EMAIL",
  "displayName": "Email for user",
  "structure": {
    "{twitterLink}": "http://www.twitter.com/",
    "{facebookLink}": "http://www.facebook.com",
    "{instagramLink}": "http://instagram.com",
     "{websiteLink}": "http://mavenir.com"
   },
  "backendPlaceholders": [
    "{ACTIVATION_URL}",
    "{USERNAME}"
  ]
}

I want to insert a new entry 'linkedIn' inside "structure" so that my doc will look like below,

{
  "templateType": "EMAIL",
  "displayName": "Email for user",
  "structure": {
    "{twitterLink}": "http://www.twitter.com/",
    "{facebookLink}": "http://www.facebook.com",
    "{instagramLink}": "http://instagram.com",
    "{linkedIn}": "http://www.linkedin.com",
    "{websiteLink}": "http://mavenir.com",
    "{linkedIn}": "http://www.linkedin.com"
  },
  "backendPlaceholders": [
    "{ACTIVATION_URL}",
    "{USERNAME}"
  ]
}

May I know how to do it in N1QL ? The structure is not an array and it is a sub document. I am not sure how to do it in N1QL.


Solution

  • Use UPDATE statement

    UPDATE default AS d
    SET d.`structure`.`{linkedIn}` = "http://www.linkedin.com"
    WHERE ....