{"id":2984,"date":"2017-04-11T08:03:09","date_gmt":"2017-04-11T15:03:09","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2984"},"modified":"2024-01-12T11:58:37","modified_gmt":"2024-01-12T19:58:37","slug":"perform-various-n1ql-queries-without-indexes-couchbase-server","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/perform-various-n1ql-queries-without-indexes-couchbase-server\/","title":{"rendered":"Perform Various N1QL Queries without Indexes in Couchbase Server"},"content":{"rendered":"<p>As you probably already know, you&#8217;re able to query Couchbase NoSQL documents using a SQL dialect called N1QL. \u00a0This is made possible through indexes that you create on documents in your Couchbase Buckets. \u00a0However, what if I told you that not every N1QL query requires an index to first exist? \u00a0After talking with my colleague, <a href=\"https:\/\/www.linkedin.com\/in\/justindmichaels\/\" target=\"_blank\" rel=\"noopener\">Justin Michaels<\/a>, he showed me an awesome trick to perform bulk operations in N1QL without indexes. \u00a0This was news to me because I always thought you needed at least one index to exist, but hey, you learn something new every day.<\/p>\n<p>We&#8217;re going to see how to run a few N1QL queries on a <a href=\"https:\/\/www.couchbase.com\" target=\"_blank\" rel=\"noopener\">Couchbase<\/a> Bucket that has no indexes and that includes no primary index.<\/p>\n<p><!--more--><\/p>\n<p>Before we jump into some sample scenarios, you might be wondering how it is possible run queries without an index. \u00a0This is actually possible by making use of the\u00a0<code>USE KEYS<\/code> operator to hone in on specific documents by their key that exists in the meta information.<\/p>\n<p>Take the following document for example:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">{\r\n    \"type\": \"person\",\r\n    \"firstname\": \"Nic\",\r\n    \"lastname\": \"Raboy\",\r\n    \"social_media\": [\r\n        {\r\n            \"website\": \"https:\/\/www.thepolyglotdeveloper.com\"\r\n        }\r\n    ]\r\n}<\/pre>\n<p>Above we have a simple document that represents a particular person. \u00a0Let&#8217;s say the above document has\u00a0<strong>nraboy<\/strong> as the id value. \u00a0To make things interesting, let&#8217;s create another document.<\/p>\n<p>Assume the following has\u00a0<strong>mraboy<\/strong> as the id value:<\/p>\n<pre class=\"lang:default highlight:0 decode:true \">{\r\n    \"type\": \"person\",\r\n    \"firstname\": \"Maria\",\r\n    \"lastname\": \"Raboy\",\r\n    \"social_media\": [\r\n        {\r\n            \"website\": \"https:\/\/www.mraboy.com\"\r\n        }\r\n    ]\r\n}<\/pre>\n<p>So if we wanted to query either of these two documents with the\u00a0<code>USE KEYS<\/code> operator in N1QL, we could compose a query that looks like the following:<\/p>\n<pre class=\"lang:default highlight:0 decode:true \">SELECT * \r\nFROM example \r\nUSE KEYS [\"nraboy\", \"mraboy\"];<\/pre>\n<p>If you look at the\u00a0<code>EXPLAIN<\/code> of the above query you&#8217;ll notice that no index was used in the query. \u00a0The above type of query would be useful if you knew the keys that you wanted to obtain and wanted incredibly fast performance similar to how it was done in a previous article I wrote titled,\u00a0<a href=\"https:\/\/www.couchbase.com\/blog\/getting-multiple-documents-by-key-in-a-single-operation-with-nodejs\/\" target=\"_blank\" rel=\"noopener\">Getting Multiple Documents by Key in a Single Operation with Node.js<\/a>.<\/p>\n<p>Let&#8217;s make things a bit more complicated. \u00a0What if we wanted to query with a relationship on one or more of the document properties?<\/p>\n<p>Let&#8217;s create another document with\u00a0<strong>couchbase<\/strong> as the document id:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">{\r\n    \"type\": \"company\",\r\n    \"name\": \"Couchbase Inc\",\r\n    \"address\": {\r\n      \"city\": \"Mountain View\",\r\n      \"state\": \"CA\"\r\n    }\r\n}<\/pre>\n<p>The above document represents a company. \u00a0As you probably guessed, we&#8217;re going to query for the company information of each person. \u00a0To make this possible, let&#8217;s change the\u00a0<strong>nraboy<\/strong> document to look like the following:<\/p>\n<pre class=\"lang:default highlight:0 decode:true \">{\r\n    \"type\": \"person\",\r\n    \"firstname\": \"Nic\",\r\n    \"lastname\": \"Raboy\",\r\n    \"social_media\": [\r\n        {\r\n            \"website\": \"https:\/\/www.thepolyglotdeveloper.com\"\r\n        }\r\n    ],\r\n    \"company\": \"couchbase\"\r\n}<\/pre>\n<p>Notice we&#8217;ve added a property with the key to our other document. \u00a0We won&#8217;t add any company information to the\u00a0<strong>mraboy<\/strong> document.<\/p>\n<p>Take the following query that has a multiple document relationship, but no indexes created:<\/p>\n<pre class=\"lang:default highlight:0 decode:true \">SELECT\r\n    p.firstname,\r\n    p.lastname,\r\n    (SELECT c.* FROM example c USE KEYS p.company)[0] AS company\r\nFROM example p \r\nUSE KEYS [\"nraboy\", \"mraboy\"];<\/pre>\n<p>Notice that the above query has a subquery that also uses the\u00a0<code>USE KEYS<\/code> operator. \u00a0Not bad right? \u00a0Try using other operators like\u00a0<code>UNNEST<\/code> to flatten the array data found in the\u00a0<code>social_media<\/code> property.<\/p>\n<h2>Conclusion<\/h2>\n<p>You just saw how to write N1QL queries in Couchbase that use no index. \u00a0By using the\u00a0<code>USE KEYS<\/code> operator we can do bulk operations based on key, like I demonstrated in the articles, <a href=\"https:\/\/www.couchbase.com\/blog\/getting-multiple-documents-by-key-in-a-single-operation-with-nodejs\/\" target=\"_blank\" rel=\"noopener\">Getting Multiple Documents by Key in a Single Operation with Node.js<\/a> and\u00a0<a href=\"https:\/\/www.couchbase.com\/blog\/using-golang-to-get-multiple-couchbase-documents-by-key-in-a-single-operation\/\" target=\"_blank\" rel=\"noopener\">Using Golang to get Multiple Couchbase Documents by Key in a Single Operation<\/a>. \u00a0A huge thanks to Justin Michaels from Couchbase for helping me with this.<\/p>\n<p>To learn more about N1QL and Couchbase, check out the <a href=\"https:\/\/www.couchbase.com\/developers\/\" target=\"_blank\" rel=\"noopener\">Couchbase Developer Portal<\/a> for more information.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>As you probably already know, you&#8217;re able to query Couchbase NoSQL documents using a SQL dialect called N1QL. \u00a0This is made possible through indexes that you create on documents in your Couchbase Buckets. \u00a0However, what if I told you that [&hellip;]<\/p>\n","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,1812],"tags":[1505],"ppma_author":[9032],"class_list":["post-2984","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-server","category-n1ql-query","tag-index"],"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>N1QL Queries: Perform without Indexes in Couchbase Server<\/title>\n<meta name=\"description\" content=\"Not every N1QL query requires an index. See how to run a few N1QL queries on a Couchbase Bucket with no indexes and that includes no primary index.\" \/>\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\/perform-various-n1ql-queries-without-indexes-couchbase-server\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Perform Various N1QL Queries without Indexes in Couchbase Server\" \/>\n<meta property=\"og:description\" content=\"Not every N1QL query requires an index. See how to run a few N1QL queries on a Couchbase Bucket with no indexes and that includes no primary index.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/perform-various-n1ql-queries-without-indexes-couchbase-server\/\" \/>\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=\"2017-04-11T15:03:09+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-01-12T19:58:37+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=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/perform-various-n1ql-queries-without-indexes-couchbase-server\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/perform-various-n1ql-queries-without-indexes-couchbase-server\/\"},\"author\":{\"name\":\"Nic Raboy, Developer Advocate, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1\"},\"headline\":\"Perform Various N1QL Queries without Indexes in Couchbase Server\",\"datePublished\":\"2017-04-11T15:03:09+00:00\",\"dateModified\":\"2024-01-12T19:58:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/perform-various-n1ql-queries-without-indexes-couchbase-server\/\"},\"wordCount\":555,\"commentCount\":3,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/perform-various-n1ql-queries-without-indexes-couchbase-server\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"Index\"],\"articleSection\":[\"Couchbase Server\",\"SQL++ \/ N1QL Query\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/perform-various-n1ql-queries-without-indexes-couchbase-server\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/perform-various-n1ql-queries-without-indexes-couchbase-server\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/perform-various-n1ql-queries-without-indexes-couchbase-server\/\",\"name\":\"N1QL Queries: Perform without Indexes in Couchbase Server\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/perform-various-n1ql-queries-without-indexes-couchbase-server\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/perform-various-n1ql-queries-without-indexes-couchbase-server\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2017-04-11T15:03:09+00:00\",\"dateModified\":\"2024-01-12T19:58:37+00:00\",\"description\":\"Not every N1QL query requires an index. See how to run a few N1QL queries on a Couchbase Bucket with no indexes and that includes no primary index.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/perform-various-n1ql-queries-without-indexes-couchbase-server\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/perform-various-n1ql-queries-without-indexes-couchbase-server\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/perform-various-n1ql-queries-without-indexes-couchbase-server\/#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\/perform-various-n1ql-queries-without-indexes-couchbase-server\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Perform Various N1QL Queries without Indexes in Couchbase Server\"}]},{\"@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\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@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\":\"en-US\",\"@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\/author\/nic-raboy-2\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"N1QL Queries: Perform without Indexes in Couchbase Server","description":"Not every N1QL query requires an index. See how to run a few N1QL queries on a Couchbase Bucket with no indexes and that includes no primary index.","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\/perform-various-n1ql-queries-without-indexes-couchbase-server\/","og_locale":"en_US","og_type":"article","og_title":"Perform Various N1QL Queries without Indexes in Couchbase Server","og_description":"Not every N1QL query requires an index. See how to run a few N1QL queries on a Couchbase Bucket with no indexes and that includes no primary index.","og_url":"https:\/\/www.couchbase.com\/blog\/perform-various-n1ql-queries-without-indexes-couchbase-server\/","og_site_name":"The Couchbase Blog","article_author":"https:\/\/www.facebook.com\/thepolyglotdeveloper","article_published_time":"2017-04-11T15:03:09+00:00","article_modified_time":"2024-01-12T19:58:37+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":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/perform-various-n1ql-queries-without-indexes-couchbase-server\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/perform-various-n1ql-queries-without-indexes-couchbase-server\/"},"author":{"name":"Nic Raboy, Developer Advocate, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1"},"headline":"Perform Various N1QL Queries without Indexes in Couchbase Server","datePublished":"2017-04-11T15:03:09+00:00","dateModified":"2024-01-12T19:58:37+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/perform-various-n1ql-queries-without-indexes-couchbase-server\/"},"wordCount":555,"commentCount":3,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/perform-various-n1ql-queries-without-indexes-couchbase-server\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["Index"],"articleSection":["Couchbase Server","SQL++ \/ N1QL Query"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/perform-various-n1ql-queries-without-indexes-couchbase-server\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/perform-various-n1ql-queries-without-indexes-couchbase-server\/","url":"https:\/\/www.couchbase.com\/blog\/perform-various-n1ql-queries-without-indexes-couchbase-server\/","name":"N1QL Queries: Perform without Indexes in Couchbase Server","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/perform-various-n1ql-queries-without-indexes-couchbase-server\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/perform-various-n1ql-queries-without-indexes-couchbase-server\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2017-04-11T15:03:09+00:00","dateModified":"2024-01-12T19:58:37+00:00","description":"Not every N1QL query requires an index. See how to run a few N1QL queries on a Couchbase Bucket with no indexes and that includes no primary index.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/perform-various-n1ql-queries-without-indexes-couchbase-server\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/perform-various-n1ql-queries-without-indexes-couchbase-server\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/perform-various-n1ql-queries-without-indexes-couchbase-server\/#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\/perform-various-n1ql-queries-without-indexes-couchbase-server\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Perform Various N1QL Queries without Indexes in Couchbase Server"}]},{"@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":"en-US"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"The Couchbase Blog","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@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":"en-US","@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\/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":"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."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/2984","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/users\/63"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=2984"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/2984\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media?parent=2984"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=2984"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=2984"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=2984"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}