{"id":2326,"date":"2016-07-07T15:18:31","date_gmt":"2016-07-07T15:18:30","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2326"},"modified":"2025-06-13T21:09:44","modified_gmt":"2025-06-14T04:09:44","slug":"using-the-couchbase-sub-document-api-with-the-golang-sdk","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/ko\/using-the-couchbase-sub-document-api-with-the-golang-sdk\/","title":{"rendered":"GoLang SDK\uc640 \ud568\uaed8 Couchbase \ud558\uc704 \ubb38\uc11c API \uc0ac\uc6a9\ud558\uae30"},"content":{"rendered":"<p>\uc5bc\ub9c8 \uc804\uc5d0 Couchbase\uc5d0\uc11c \ubb38\uc11c\uc758 \uc77c\ubd80 \ub610\ub294 \ud30c\ud3b8\uc73c\ub85c \uc791\uc5c5\ud558\ub294 \ubc29\ubc95\uc5d0 \ub300\ud55c \uae00\uc744 \uc37c\uc2b5\ub2c8\ub2e4.<br \/>\n<a href=\"https:\/\/www.couchbase.com\/blog\/ko\/using-the-couchbase-sub-document-api-with-the-nodejs-sdk\/\">Node.js SDK \uc0ac\uc6a9<\/a>. \ud568\uaed8 \uc791\uc5c5\ud560 \uc218 \uc788\ub2e4\ub294 \uac83\uc740<br \/>\n\ub97c \uc0ac\uc6a9\ud558\uc5ec \ubb38\uc11c\uc758 \uc77c\ubd80\ub97c<br \/>\n<a href=\"https:\/\/developer.couchbase.com\/server\/?utm_source=blogs&amp;utm_medium=link&amp;utm_campaign=blogs\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uc11c\ubc84<\/a> 4.5 \uc774\uc0c1 \ubc0f \ud558\uc704 \ubb38\uc11c API\ub97c \uc9c0\uc6d0\ud569\ub2c8\ub2e4.<br \/>\nNoSQL \ubb38\uc11c\ub85c \uc791\uc5c5\ud560 \ub54c \ubaa8\ub4e0 \uc784\ubca0\ub514\ub4dc JSON \ub370\uc774\ud130\ub85c \uc778\ud574 \ub9e4\uc6b0 \ud070 \ubb38\uc11c\uac00 \uc788\uc744 \uc218 \uc788\uae30 \ub54c\ubb38\uc5d0 \uc774\ub294 \ud070 \ubb38\uc81c\uc785\ub2c8\ub2e4. \uc544\ub9c8\ub3c4<br \/>\n\ub300\uc6a9\ub7c9 \ubb38\uc11c\ub97c \uc694\uccad\ud558\ub294 \uac83\uc740 \ub290\ub9ac\uace0, \ud604\ub300 \uc6f9 \uc2dc\ub300\uc5d0\ub294 \ubaa8\ub4e0 \uac83\uc774 \ube68\ub77c\uc57c \ud55c\ub2e4\ub294 \uac83\uc744 \uc54c\uace0 \uacc4\uc2e4 \uac81\ub2c8\ub2e4. \ub300\uc2e0 \ub2e4\uc74c\uacfc \uac19\uc740 \uacbd\uc6b0\uc5d0\ub9cc \uc694\uccad\ud558\ub294 \uac83\uc774 \ub354 \ud6a8\uc728\uc801\uc785\ub2c8\ub2e4.<br \/>\n\ubaa8\ub4e0 \uac83\uc744 \ud55c\uaebc\ubc88\uc5d0 \ucc98\ub9ac\ud558\uc9c0 \uc54a\uace0 \ud544\uc694\ud55c \ubd80\ubd84\ub9cc \uc791\uc5c5\ud558\uc138\uc694.<\/p>\n<p>\uc774\ubc88\uc5d0\ub294 Node.js\uc5d0\uc11c \ubcf4\uc558\ub358 \uac83\uacfc \ub3d9\uc77c\ud55c NoSQL \ubb38\uc11c \uc870\uc791\uc744 \uc774\ubc88\uc5d0\ub294 Go \ud504\ub85c\uadf8\ub798\ubc0d \uc5b8\uc5b4\ub97c \uc0ac\uc6a9\ud574 \uc0b4\ud3b4\ubcf4\uaca0\uc2b5\ub2c8\ub2e4. \ud574\ubd05\uc2dc\ub2e4.<br \/>\n\uc774 \uc608\uc81c\uc5d0 \ub300\ud55c \ub370\uc774\ud130 \uc2a4\ud1a0\ub9ac\ub97c \uc0dd\uac01\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4. \uc774\uc804 \uc608\uc81c\uc640 \ub3d9\uc77c\ud55c \ub370\uc774\ud130 \uc2a4\ud1a0\ub9ac\uac00 \ub418\uaca0\uc9c0\ub9cc, \ub2e4\uc74c\uacfc \uac19\uc740 JSON \ubb38\uc11c\uac00 \uc788\ub2e4\uace0 \uac00\uc815\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4:<\/p>\n<pre><code>\r\n{\r\n    firstName: \"Nic\",\r\n    lastName: \"Raboy\",\r\n    socialNetworking: {\r\n        twitter: \"nraboy\"\r\n    }\r\n}\r\n<\/code><\/pre>\n<p>\uc704\uc758 \ub370\uc774\ud130\ub294 \uae30\ubcf8 <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/user-profile-store-advanced-data-modeling\/\">\uc0ac\uc6a9\uc790 \ud504\ub85c\ud544 \uc800\uc7a5\uc18c<\/a> \uc18c\uc15c \ubbf8\ub514\uc5b4 \uc815\ubcf4\ub85c. \ubaa8\ub4e0 \uc870\uc791\uc740 \uc18c\uc15c \ubbf8\ub514\uc5b4 \uc815\ubcf4\ub97c \uc911\uc2ec\uc73c\ub85c \uc774\ub8e8\uc5b4\uc9d1\ub2c8\ub2e4.<br \/>\n\ub97c \ub458\ub7ec\uc2f8\uace0 \uc788\ub294 \uc0c1\uc704 \ub370\uc774\ud130\uc785\ub2c8\ub2e4.<\/p>\n<p>\uc774 \uac00\uc774\ub4dc\uc5d0\uc11c\ub294 \uac04\ub2e8\ud558\uac8c \uc124\uba85\ud558\uae30 \uc704\ud574 \uc0c8 \ud504\ub85c\uc81d\ud2b8\ub85c \uc791\uc5c5\ud558\uaca0\uc2b5\ub2c8\ub2e4. \uc774 \uc2dc\uc810\uc5d0\uc11c\ub294 Couchbase Server 4.5 \uc774\uc0c1\uacfc<br \/>\n\ucef4\ud4e8\ud130\uc5d0 GoLang\uc774 \uc124\uce58 \ubc0f \uad6c\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc544\uc9c1 Couchbase\uc6a9 GoLang SDK\ub97c \ub2e4\uc6b4\ub85c\ub4dc\ud558\uc9c0 \uc54a\uc740 \uacbd\uc6b0 \uba85\ub839\uc5d0\uc11c \ub2e4\uc74c\uc744 \uc2e4\ud589\ud558\uc138\uc694.<br \/>\n\ud504\ub86c\ud504\ud2b8 \ub610\ub294 \ud130\ubbf8\ub110:<\/p>\n<pre><code>\r\ngo get github.com\/couchbase\/gocb\r\n<\/code><\/pre>\n<p>\uc774 \uc608\uc81c\uc758 \uc804\uccb4 \ud504\ub85c\uc81d\ud2b8\ub294 \ud558\ub098\uc758 \ud30c\uc77c\uc5d0 \uc800\uc7a5\ub429\ub2c8\ub2e4. \uc774 \ud30c\uc77c\uc744 \ub2e4\uc74c\uacfc \uac19\uc774 \ucc38\uc870\ud558\uaca0\uc2b5\ub2c8\ub2e4. <strong>main.go<\/strong> \uadf8\ub9ac\uace0 \ubaa8\ub4e0<br \/>\nGo \ud504\ub85c\uadf8\ub798\ubc0d \uc5b8\uc5b4\uc758 \uc694\uad6c \uc0ac\ud56d\uc744 \ucda9\uc871\ud558\uae30\ub9cc \ud558\uba74 \uc6d0\ud558\ub294 Go \ud504\ub85c\uc81d\ud2b8 \ub514\ub809\ud1a0\ub9ac\ub97c \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uba3c\uc800 \uc2dc\uc791\ud558\ub824\uba74 \ub2e4\uc74c\uacfc \uac19\uc774 <code>\uba54\uc778<\/code> \ud568\uc218\uc785\ub2c8\ub2e4:<\/p>\n<pre><code>\r\nfunc main() {\r\n fmt.Println(\"Starting the app...\")\r\n cluster, _ := gocb.Connect(\"couchbase:\/\/localhost\")\r\n bucket, _ = cluster.OpenBucket(\"default\", \"\")\r\n person := Person{FirstName: \"Nic\", LastName: \"Raboy\", SocialNetworking: &amp;SocialNetworking{Twitter: \"nraboy\"}}\r\n createDocument(\"nraboy\", &amp;person)\r\n}\r\n<\/code><\/pre>\n<p>\uc704\uc5d0\uc11c \uba87 \uac00\uc9c0 \uc8fc\uc758\ud574\uc57c \ud560 \uc0ac\ud56d\uc774 \uc788\uc2b5\ub2c8\ub2e4. \uba3c\uc800 \ub85c\uceec\ub85c \uc2e4\ud589 \uc911\uc778 Couchbase \ud074\ub7ec\uc2a4\ud130\uc5d0 \ub300\ud55c \uc5f0\uacb0\uc744 \uc124\uc815\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uc5f0\uacb0\uc5d0<br \/>\n\uc124\ub9bd\ub418\uc5b4 <code>\uae30\ubcf8\uac12<\/code> \ubc84\ud0b7\uc744 \ucd94\uac00\ud569\ub2c8\ub2e4. \ubc84\ud0b7\uc5d0 \uac12\uc744 \ud560\ub2f9\ud558\ub294 \uac83\uc740 <code>\ubc84\ud0b7<\/code> \uc815\uc758\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc774<br \/>\n\ub97c \uc0ac\uc6a9\ud558\ub294 \uc774\uc720\ub294 \uc774 \ubcc0\uc218\ub97c \uc804\uc5ed\uc801\uc73c\ub85c \uc0ac\uc6a9\ud560 \uc608\uc815\uc774\ubbc0\ub85c <code>\uba54\uc778<\/code> \ud568\uc218\ub97c \ud638\ucd9c\ud569\ub2c8\ub2e4. \ubc84\ud0b7\uc774 \uc5f4\ub9ac\uba74 \ub2e4\uc74c\uc744 \uc218\ud589\ud569\ub2c8\ub2e4.<br \/>\n\ucd08\uae30 \ub370\uc774\ud130 \uad6c\uc870\ub97c \uc0dd\uc131\ud569\ub2c8\ub2e4. \uc774 \ub370\uc774\ud130 \uad6c\uc870 <code>\uc0ac\ub78c<\/code> \ub294 \uc544\ub798\uc5d0 \uc815\uc758\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4:<\/p>\n<pre><code>\r\ntype Person struct {\r\n FirstName        string            `json:\"firstname,omitempty\"`\r\n LastName         string            `json:\"lastname,omitempty\"`\r\n SocialNetworking *SocialNetworking `json:\"socialNetworking,omitempty\"`\r\n}\r\n\r\ntype SocialNetworking struct {\r\n Twitter string `json:\"twitter,omitempty\"`\r\n Website string `json:\"website,omitempty\"`\r\n}\r\n<\/code><\/pre>\n<p>\uadf8\ub9ac\uace0 <code>\uc0ac\ub78c<\/code> \uad6c\uc870\uccb4\ub294 \uae30\ubcf8 \uc0ac\uc6a9\uc790 \uc815\ubcf4\ub97c \uac16\uace0 \ub2e4\ub978 \uad6c\uc870\uccb4\ub97c \ucc38\uc870\ud569\ub2c8\ub2e4. <code>\uc18c\uc15c \ub124\ud2b8\uc6cc\ud0b9<\/code>. \ubaa8\ub450<br \/>\n\uad6c\uc870\uc5d0\ub294 \ube44\uc5b4 \uc788\ub294 \uacbd\uc6b0 \uc778\uc1c4\uc5d0\uc11c \uc81c\uc678\ud560 JSON \uc18d\uc131 \uc774\ub984\uc73c\ub85c \ud0dc\uadf8\uac00 \uc9c0\uc815\ub429\ub2c8\ub2e4.<\/p>\n<p>\ub2e4\uc2dc \ub3cc\uc544\uac00\uc11c <code>\uba54\uc778<\/code> \ud568\uc218\ub97c \uc0ac\uc6a9\ud558\uc138\uc694. \uc0c8 \uc0ac\ub78c \uac1c\uccb4\uac00 \uc6f9\uc0ac\uc774\ud2b8\uc5d0 \ub204\ub77d\ub41c \uac83\uc744 \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \uae30\ub2a5\uc740 \ub098\uc911\uc5d0 \ucd94\uac00\ud560 \uc608\uc815\uc785\ub2c8\ub2e4. \uccab \ubc88\uc9f8<br \/>\n\ud568\uc218\uc5d0\uc11c \ud638\ucd9c\ud558\ub294 <code>\uba54\uc778<\/code> \ud568\uc218\uac00 \ud638\ucd9c\ub429\ub2c8\ub2e4. <code>createDocument<\/code> \ub97c \ud638\ucd9c\ud558\uba74 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \uac1d\uccb4\ub97c \ucd94\uac00\ud569\ub2c8\ub2e4. \uc774 \ud568\uc218<br \/>\n\ub294 \ub2e4\uc74c\uacfc \uac19\uc774 \uc815\uc758\ub429\ub2c8\ub2e4:<\/p>\n<pre><code>\r\nfunc createDocument(documentId string, person *Person) {\r\n fmt.Println(\"Upserting a full document...\")\r\n _, error := bucket.Upsert(documentId, person, 0)\r\n if error != nil {\r\n  fmt.Println(error.Error())\r\n  return\r\n }\r\n getDocument(documentId)\r\n getSubDocument(documentId)\r\n}\r\n<\/code><\/pre>\n<p>\uc704\uc758 \ud568\uc218\uc5d0\uc11c\ub294 \uc544\uc9c1 \ubb38\uc11c \uc870\uac01\uc73c\ub85c \uc791\uc5c5\ud558\uace0 \uc788\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uba3c\uc800 \uc0c8\ub85c\uc6b4 \ub370\uc774\ud130\ub85c \uc608\uc81c\ub97c \uc2dc\uc791\ud574\uc57c \ud569\ub2c8\ub2e4. \uc6b0\ub9ac\ub294<br \/>\n\ucd08\uae30 \ubb38\uc11c\uc5d0 \uc624\ub958\uac00 \uc5c6\ub294 \uacbd\uc6b0 \ud638\ucd9c\ud560 \uac83\uc785\ub2c8\ub2e4. <code>getDocument<\/code> \ub97c \uc0ac\uc6a9\ud558\uc5ec \uc0dd\uc131\ub418\uc5c8\ub294\uc9c0 \ud655\uc778\ud55c \ub2e4\uc74c<br \/>\n<code>getSubDocument<\/code> \ub97c \uc0ac\uc6a9\ud558\uc5ec \ubb38\uc11c\uc758 \ud2b9\uc815 \ubd80\ubd84\uc744 \uac00\uc838\uc62c \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ubb38\uc11c\uc5d0\uc11c <code>getDocument<\/code> \ud568\uc218\ub294 \uc774 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c \ub450 \ubc88 \uc0ac\uc6a9\ub418\uba70<br \/>\n\ub2e4\uc74c\uacfc \uac19\uc774 \ud45c\uc2dc\ub429\ub2c8\ub2e4:<\/p>\n<pre><code>\r\nfunc getDocument(documentId string) {\r\n fmt.Println(\"Getting the full document by id...\")\r\n var person Person\r\n _, error := bucket.Get(documentId, &amp;person)\r\n if error != nil {\r\n  fmt.Println(error.Error())\r\n  return\r\n }\r\n jsonPerson, _ := json.Marshal(&amp;person)\r\n fmt.Println(string(jsonPerson))\r\n}\r\n<\/code><\/pre>\n<p>\uc704\uc758 \uc608\uc5d0\uc11c <code>getDocument<\/code> \ud568\uc218\ub97c \uc0ac\uc6a9\ud558\uc5ec ID\ub97c \uae30\uc900\uc73c\ub85c \uc804\uccb4 \ubb38\uc11c\ub97c \uac00\uc838\uc640 JSON\uc73c\ub85c \ub9c8\uc0ec\ub9c1\ud55c \ub2e4\uc74c \uc778\uc1c4\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uc774<br \/>\n\ub97c \ud1b5\ud574 <code>getSubDocument<\/code> \ud568\uc218\ub294 \uc544\ub798\uc640 \uac19\uc2b5\ub2c8\ub2e4:<\/p>\n<pre><code>\r\nfunc getSubDocument(documentId string) {\r\n fmt.Println(\"Getting part of a document by id...\")\r\n fragment, error := bucket.LookupIn(documentId).Get(\"socialNetworking\").Execute()\r\n if error != nil {\r\n  fmt.Println(error.Error())\r\n  return\r\n }\r\n var socialNetworking SocialNetworking\r\n fragment.Content(\"socialNetworking\", &amp;socialNetworking)\r\n jsonSocialNetworking, _ := json.Marshal(&amp;socialNetworking)\r\n fmt.Println(string(jsonSocialNetworking))\r\n upsertSubDocument(documentId, \"thepolyglotdeveloper.com\")\r\n}\r\n<\/code><\/pre>\n<p>\uc704\uc758 \uc608\uc5d0\uc11c <code>getSubDocument<\/code> \ud568\uc218\ub97c \uc0ac\uc6a9\ud558\uc5ec \ubb38\uc11c \ub0b4\uc5d0\uc11c \ud2b9\uc815 \uc18d\uc131\uc5d0 \ub300\ud55c \uc870\ud68c\ub97c \uc218\ud589\ud569\ub2c8\ub2e4. \uc5ec\uae30\uc5d0\uc11c \uc791\uc5c5\uc744 \uc2dc\uc791\ud569\ub2c8\ub2e4.<br \/>\n\ud558\uc704 \ubb38\uc11c API\ub97c \uc0ac\uc6a9\ud569\ub2c8\ub2e4. \uc6b0\ub9ac\uac00 \uc218\ud589\ud558\ub294 \uc870\ud68c\ub294 <code>\uc18c\uc15c\ub124\ud2b8\uc6cc\ud0b9<\/code> \uc18d\uc131\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4. JSON\uc744 \ucc38\uc870\ud558\ub294 \uac83\uc774\uc9c0<br \/>\n\uc758 <code>\uad6c\uc870\uccb4<\/code> \uc774\ub984. \uc870\uac01\uc774 \uc788\uc73c\uba74 \uc774\ub97c JSON\uc73c\ub85c \ub9c8\uc0ec\ub9c1\ud55c \ub2e4\uc74c \uc778\uc1c4\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uacb0\uacfc\ub294 \ub2e4\uc74c\uacfc \uac19\uc544\uc57c \ud569\ub2c8\ub2e4:<\/p>\n<pre><code>\r\n{\r\n    \"twitter\": \"nraboy\"\r\n}\r\n<\/code><\/pre>\n<p>\ub9c8\uc9c0\ub9c9\uc5d0 <code>getSubDocument<\/code> \ud568\uc218\ub97c \ud638\ucd9c\ud558\uc5ec \uace7 \uc0dd\uc131\ub420 <code>\uc5c5\uc11c\ud2b8\uc11c\ube0c\ubb38\uc11c<\/code> \ud568\uc218\ub97c \ud638\ucd9c\ud569\ub2c8\ub2e4. \uc5ec\uae30\uc5d0\uc11c<br \/>\n\ub97c \uc0ac\uc6a9\ud558\uba74 \uc804\uccb4 \ubb38\uc11c\ub97c \uba3c\uc800 \uac00\uc838\uc624\uc9c0 \uc54a\uace0 \ubb38\uc11c\uc758 \uc77c\ubd80\ub97c \uc218\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \uae30\ub2a5\uc740 \ub2e4\uc74c\uacfc \uac19\uc774 \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4:<\/p>\n<pre><code>\r\nfunc upsertSubDocument(documentId string, website string) {\r\n fmt.Println(\"Upserting part of a document...\")\r\n _, error := bucket.MutateIn(documentId, 0, 0).Upsert(\"socialNetworking.website\", website, true).Execute()\r\n if error != nil {\r\n  fmt.Println(error.Error())\r\n  return\r\n }\r\n getDocument(documentId)\r\n}\r\n<\/code><\/pre>\n<p>\uc704\uc758 \ud568\uc218\uc5d0\uc11c\ub294 \uba3c\uc800 \ubb38\uc11c ID\ub97c \uae30\uc900\uc73c\ub85c \uc870\uc791\ud560 \ubb38\uc11c\ub97c \uc9c0\uc815\ud569\ub2c8\ub2e4. \uadf8\ub7f0 \ub2e4\uc74c \uc5c5\uc11c\ud2b8\ub97c \uc218\ud589\ud55c\ub2e4\uace0 \uac00\uc815\ud569\ub2c8\ub2e4.<br \/>\n\ubb38\uc11c\uc758 \ud2b9\uc815 \uacbd\ub85c \ub610\ub294 \uc18d\uc131\uc744 \ubcc0\uacbd\ud569\ub2c8\ub2e4. \uc774 \uc608\uc81c\uc5d0\uc11c\ub294 \ubb38\uc11c\uc758 \ud2b9\uc815 \uacbd\ub85c\uc5d0 <code>\uc6f9\uc0ac\uc774\ud2b8<\/code> \uc18d\uc131\uc5d0\uc11c \ucc3e\uc740<br \/>\n<code>\uc18c\uc15c\ub124\ud2b8\uc6cc\ud0b9<\/code> \ubd80\ubaa8. \uc774 \ubaa8\ub4e0 \uacfc\uc815\uc740 \uc2e4\uc81c\ub85c \ubb38\uc11c\ub97c \ubc1b\uc9c0 \uc54a\uace0 \uc9c4\ud589\ub429\ub2c8\ub2e4.<\/p>\n<p>\uc791\uc5c5\uc774 \ub05d\ub098\uba74 \uc804\uccb4 \ubb38\uc11c \uc870\ud68c\ub97c \ub2e4\uc2dc \uc218\ud589\ud558\uc5ec \ubb38\uc11c\uac00 \uc804\uccb4\uc801\uc73c\ub85c \uc5b4\ub5bb\uac8c \ubcf4\uc774\ub294\uc9c0 \ud655\uc778\ud569\ub2c8\ub2e4. \uc774\ub97c \uc6d0\uadfc\uac10 \uc788\uac8c \ud45c\ud604\ud574\uc57c \ud558\ub294 \uacbd\uc6b0<br \/>\n\uc774 \ud504\ub85c\uc81d\ud2b8\uc758 \uc804\uccb4 \ucf54\ub4dc\ub294 \uc544\ub798\uc5d0\uc11c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4:<\/p>\n<pre><code>\r\npackage main\r\n\r\nimport (\r\n \"encoding\/json\"\r\n \"fmt\"\r\n\r\n \"github.com\/couchbase\/gocb\"\r\n)\r\n\r\nvar bucket *gocb.Bucket\r\n\r\ntype Person struct {\r\n FirstName        string            `json:\"firstname,omitempty\"`\r\n LastName         string            `json:\"lastname,omitempty\"`\r\n SocialNetworking *SocialNetworking `json:\"socialNetworking,omitempty\"`\r\n}\r\n\r\ntype SocialNetworking struct {\r\n Twitter string `json:\"twitter,omitempty\"`\r\n Website string `json:\"website,omitempty\"`\r\n}\r\n\r\nfunc getDocument(documentId string) {\r\n fmt.Println(\"Getting the full document by id...\")\r\n var person Person\r\n _, error := bucket.Get(documentId, &amp;person)\r\n if error != nil {\r\n  fmt.Println(error.Error())\r\n  return\r\n }\r\n jsonPerson, _ := json.Marshal(&amp;person)\r\n fmt.Println(string(jsonPerson))\r\n}\r\n\r\nfunc createDocument(documentId string, person *Person) {\r\n fmt.Println(\"Upserting a full document...\")\r\n _, error := bucket.Upsert(documentId, person, 0)\r\n if error != nil {\r\n  fmt.Println(error.Error())\r\n  return\r\n }\r\n getDocument(documentId)\r\n getSubDocument(documentId)\r\n}\r\n\r\nfunc getSubDocument(documentId string) {\r\n fmt.Println(\"Getting part of a document by id...\")\r\n fragment, error := bucket.LookupIn(documentId).Get(\"socialNetworking\").Execute()\r\n if error != nil {\r\n  fmt.Println(error.Error())\r\n  return\r\n }\r\n var socialNetworking SocialNetworking\r\n fragment.Content(\"socialNetworking\", &amp;socialNetworking)\r\n jsonSocialNetworking, _ := json.Marshal(&amp;socialNetworking)\r\n fmt.Println(string(jsonSocialNetworking))\r\n upsertSubDocument(documentId, \"thepolyglotdeveloper.com\")\r\n}\r\n\r\nfunc upsertSubDocument(documentId string, website string) {\r\n fmt.Println(\"Upserting part of a document...\")\r\n _, error := bucket.MutateIn(documentId, 0, 0).Upsert(\"socialNetworking.website\", website, true).Execute()\r\n if error != nil {\r\n  fmt.Println(error.Error())\r\n  return\r\n }\r\n getDocument(documentId)\r\n}\r\n\r\nfunc main() {\r\n fmt.Println(\"Starting the app...\")\r\n cluster, _ := gocb.Connect(\"couchbase:\/\/localhost\")\r\n bucket, _ = cluster.OpenBucket(\"default\", \"\")\r\n person := Person{FirstName: \"Nic\", LastName: \"Raboy\", SocialNetworking: &amp;SocialNetworking{Twitter: \"nraboy\"}}\r\n createDocument(\"nraboy\", &amp;person)\r\n}\r\n<\/code><\/pre>\n<p>\uc774 \ud504\ub85c\uc81d\ud2b8\ub97c \ud14c\uc2a4\ud2b8\ud574\ubcf4\uace0 \ud558\uc704 \ubb38\uc11c API\uac00 \uc5bc\ub9c8\ub098 \ud6cc\ub96d\ud55c\uc9c0 \ud655\uc778\ud574 \ubcf4\uc138\uc694.<\/p>\n<h2>\uacb0\ub860<\/h2>\n<p>\ubc29\uae08 Couchbase Go SDK\ub97c \uc0ac\uc6a9\ud558\uc5ec GoLang \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c Couchbase Server \ud558\uc704 \ubb38\uc11c API\ub97c \uc0ac\uc6a9\ud558\ub294 \ubc29\ubc95\uc744 \uc0b4\ud3b4\ubcf4\uc558\uc2b5\ub2c8\ub2e4. \ub354 \uc774\uc0c1 \ub2e4\uc74c \uc0ac\ud56d\uc5d0 \ub300\ud574 \uac71\uc815\ud560 \ud544\uc694\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.<br \/>\n\uc7a0\uc7ac\uc801\uc73c\ub85c \ud070 \uc6a9\ub7c9\uc758 NoSQL \ubb38\uc11c\ub97c \uc804\ub2ec\ud558\uc5ec \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uc751\ub2f5 \uc2dc\uac04\uc744 \ub9dd\uce60 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ubb38\uc11c \uc6a9\ub7c9\uc774 \ud06c\uac70\ub098 \ub2e4\uc74c\uacfc \uac19\uc740 \uacbd\uc6b0<br \/>\n\uc774 API\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc790\uc138\ud55c \ub0b4\uc6a9\uc740 \uce74\uc6b0\uce58\ubca0\uc774\uc2a4\uc5d0\uc11c \ud655\uc778\ud558\uc138\uc694. <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/developers\/?utm_source=blogs&amp;utm_medium=link&amp;utm_campaign=blogs\">\uac1c\ubc1c\uc790 \ud3ec\ud138<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>Not too long ago I wrote about working with parts, or fragments, of documents in Couchbase using the Node.js SDK. Being able to work with parts of documents is made possible using Couchbase Server 4.5 and higher and the sub-document [&hellip;]<\/p>","protected":false},"author":63,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1816,1820],"tags":[1606],"ppma_author":[9032],"class_list":["post-2326","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-server","category-golang","tag-sub-document"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.8 (Yoast SEO v25.8) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Using the Couchbase Sub-Document API with the GoLang SDK - The Couchbase Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/ko\/using-the-couchbase-sub-document-api-with-the-golang-sdk\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Using the Couchbase Sub-Document API with the GoLang SDK\" \/>\n<meta property=\"og:description\" content=\"Not too long ago I wrote about working with parts, or fragments, of documents in Couchbase using the Node.js SDK. Being able to work with parts of documents is made possible using Couchbase Server 4.5 and higher and the sub-document [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/ko\/using-the-couchbase-sub-document-api-with-the-golang-sdk\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/thepolyglotdeveloper\" \/>\n<meta property=\"article:published_time\" content=\"2016-07-07T15:18:30+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T04:09:44+00:00\" \/>\n<meta name=\"author\" content=\"Nic Raboy, Developer Advocate, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@nraboy\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Nic Raboy, Developer Advocate, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-golang-sdk\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-golang-sdk\/\"},\"author\":{\"name\":\"Nic Raboy, Developer Advocate, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1\"},\"headline\":\"Using the Couchbase Sub-Document API with the GoLang SDK\",\"datePublished\":\"2016-07-07T15:18:30+00:00\",\"dateModified\":\"2025-06-14T04:09:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-golang-sdk\/\"},\"wordCount\":889,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-golang-sdk\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"sub-document\"],\"articleSection\":[\"Couchbase Server\",\"GoLang\"],\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-golang-sdk\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-golang-sdk\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-golang-sdk\/\",\"name\":\"Using the Couchbase Sub-Document API with the GoLang SDK - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-golang-sdk\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-golang-sdk\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2016-07-07T15:18:30+00:00\",\"dateModified\":\"2025-06-14T04:09:44+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-golang-sdk\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-golang-sdk\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-golang-sdk\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-golang-sdk\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Using the Couchbase Sub-Document API with the GoLang SDK\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1\",\"name\":\"Nic Raboy, Developer Advocate, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/8863514d8bed0cf6080f23db40e00354\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g\",\"caption\":\"Nic Raboy, Developer Advocate, Couchbase\"},\"description\":\"Nic Raboy is an advocate of modern web and mobile development technologies. He has experience in Java, JavaScript, Golang and a variety of frameworks such as Angular, NativeScript, and Apache Cordova. Nic writes about his development experiences related to making web and mobile development easier to understand.\",\"sameAs\":[\"https:\/\/www.thepolyglotdeveloper.com\",\"https:\/\/www.facebook.com\/thepolyglotdeveloper\",\"https:\/\/x.com\/nraboy\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/ko\/author\/nic-raboy-2\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Using the Couchbase Sub-Document API with the GoLang SDK - The Couchbase Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/ko\/using-the-couchbase-sub-document-api-with-the-golang-sdk\/","og_locale":"ko_KR","og_type":"article","og_title":"Using the Couchbase Sub-Document API with the GoLang SDK","og_description":"Not too long ago I wrote about working with parts, or fragments, of documents in Couchbase using the Node.js SDK. Being able to work with parts of documents is made possible using Couchbase Server 4.5 and higher and the sub-document [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/ko\/using-the-couchbase-sub-document-api-with-the-golang-sdk\/","og_site_name":"The Couchbase Blog","article_author":"https:\/\/www.facebook.com\/thepolyglotdeveloper","article_published_time":"2016-07-07T15:18:30+00:00","article_modified_time":"2025-06-14T04:09:44+00:00","author":"Nic Raboy, Developer Advocate, Couchbase","twitter_card":"summary_large_image","twitter_creator":"@nraboy","twitter_misc":{"Written by":"Nic Raboy, Developer Advocate, Couchbase","Est. reading time":"4\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-golang-sdk\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-golang-sdk\/"},"author":{"name":"Nic Raboy, Developer Advocate, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1"},"headline":"Using the Couchbase Sub-Document API with the GoLang SDK","datePublished":"2016-07-07T15:18:30+00:00","dateModified":"2025-06-14T04:09:44+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-golang-sdk\/"},"wordCount":889,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-golang-sdk\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["sub-document"],"articleSection":["Couchbase Server","GoLang"],"inLanguage":"ko-KR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-golang-sdk\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-golang-sdk\/","url":"https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-golang-sdk\/","name":"Using the Couchbase Sub-Document API with the GoLang SDK - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-golang-sdk\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-golang-sdk\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2016-07-07T15:18:30+00:00","dateModified":"2025-06-14T04:09:44+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-golang-sdk\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-golang-sdk\/"]}]},{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-golang-sdk\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-golang-sdk\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Using the Couchbase Sub-Document API with the GoLang SDK"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ube14\ub85c\uadf8","description":"NoSQL \ub370\uc774\ud130\ubca0\uc774\uc2a4, Couchbase","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ube14\ub85c\uadf8","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1","name":"Nic Raboy, \uac1c\ubc1c\uc790 \uc639\ud638\uc790, Couchbase","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/8863514d8bed0cf6080f23db40e00354","url":"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g","caption":"Nic Raboy, Developer Advocate, Couchbase"},"description":"\ub2c9 \ub77c\ubcf4\uc774\ub294 \ucd5c\uc2e0 \uc6f9 \ubc0f \ubaa8\ubc14\uc77c \uac1c\ubc1c \uae30\uc220\uc744 \uc639\ud638\ud558\ub294 \uc0ac\ub78c\uc785\ub2c8\ub2e4. \uadf8\ub294 Java, JavaScript, Golang \ubc0f Angular, NativeScript, Apache Cordova\uc640 \uac19\uc740 \ub2e4\uc591\ud55c \ud504\ub808\uc784\uc6cc\ud06c\uc5d0 \ub300\ud55c \uacbd\ud5d8\uc774 \uc788\uc2b5\ub2c8\ub2e4. Nic\uc740 \uc6f9 \ubc0f \ubaa8\ubc14\uc77c \uac1c\ubc1c\uc744 \ubcf4\ub2e4 \uc27d\uac8c \uc774\ud574\ud560 \uc218 \uc788\ub3c4\ub85d \uc790\uc2e0\uc758 \uac1c\ubc1c \uacbd\ud5d8\uc5d0 \ub300\ud574 \uae00\uc744 \uc4f0\uace0 \uc788\uc2b5\ub2c8\ub2e4.","sameAs":["https:\/\/www.thepolyglotdeveloper.com","https:\/\/www.facebook.com\/thepolyglotdeveloper","https:\/\/x.com\/nraboy"],"url":"https:\/\/www.couchbase.com\/blog\/ko\/author\/nic-raboy-2\/"}]}},"authors":[{"term_id":9032,"user_id":63,"is_guest":0,"slug":"nic-raboy-2","display_name":"Nic Raboy, Developer Advocate, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g","author_category":"","last_name":"Raboy","first_name":"Nic","job_title":"","user_url":"https:\/\/www.thepolyglotdeveloper.com","description":"\ub2c9 \ub77c\ubcf4\uc774\ub294 \ucd5c\uc2e0 \uc6f9 \ubc0f \ubaa8\ubc14\uc77c \uac1c\ubc1c \uae30\uc220\uc744 \uc639\ud638\ud558\ub294 \uc0ac\ub78c\uc785\ub2c8\ub2e4. \uadf8\ub294 Java, JavaScript, Golang \ubc0f Angular, NativeScript, Apache Cordova\uc640 \uac19\uc740 \ub2e4\uc591\ud55c \ud504\ub808\uc784\uc6cc\ud06c\uc5d0 \ub300\ud55c \uacbd\ud5d8\uc774 \uc788\uc2b5\ub2c8\ub2e4. Nic\uc740 \uc6f9 \ubc0f \ubaa8\ubc14\uc77c \uac1c\ubc1c\uc744 \ubcf4\ub2e4 \uc27d\uac8c \uc774\ud574\ud560 \uc218 \uc788\ub3c4\ub85d \uc790\uc2e0\uc758 \uac1c\ubc1c \uacbd\ud5d8\uc5d0 \ub300\ud574 \uae00\uc744 \uc4f0\uace0 \uc788\uc2b5\ub2c8\ub2e4."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/2326","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/users\/63"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/comments?post=2326"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/2326\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media?parent=2326"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/categories?post=2326"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/tags?post=2326"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/ppma_author?post=2326"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}