{"id":2987,"date":"2017-03-17T08:50:45","date_gmt":"2017-03-17T15:50:45","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2987"},"modified":"2025-06-13T18:46:21","modified_gmt":"2025-06-14T01:46:21","slug":"feature-enhancements-n1ql-couchbase-server-5-march-developer","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/feature-enhancements-n1ql-couchbase-server-5-march-developer\/","title":{"rendered":"Feature Enhancements to N1QL in the Couchbase Server 5.0 March Developer Build"},"content":{"rendered":"<p>With the recent March 2017 Developer build of Couchbase there were many bug fixes, but also feature enhancements to core technologies like N1QL. \u00a0For example, now indexes can be created on various meta information such as the document cas and expiration values. \u00a0Another example includes a simplified syntax when creating array indexes.<\/p>\n<p>We&#8217;re going to take a look at some of these enhancements and how you might use them in your own application.<!--more--><\/p>\n<h2>Simplified Array Indexing in Couchbase 5.0<\/h2>\n<p>With Couchbase Server 4.5 came the array indexing. Take the following sample 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      \"type\": \"twitter\",\r\n      \"url\": \"https:\/\/www.twitter.com\/nraboy\"\r\n    },\r\n    {\r\n      \"type\": \"website\",\r\n      \"url\": \"https:\/\/www.thepolyglotdeveloper.com\"\r\n    }\r\n  ]\r\n}<\/pre>\n<h3>New Array Index Syntax<\/h3>\n<p>Before Couchbase 5.0, to index the array elements found in <code>social-media<\/code> you had to write an index that looked something like the following:<\/p>\n<pre class=\"lang:default highlight:0 decode:true \">CREATE INDEX ism \r\nON `default` ( DISTINCT ARRAY media FOR media IN `social-media` END )\r\nWHERE type = 'person';<\/pre>\n<p>In the above example, the\u00a0<code>FOR<\/code> operator was necessary for array indexing. \u00a0In Couchbase Server 5.0 there is a much more simplified syntax. \u00a0The same index can be created via the following:<\/p>\n<pre class=\"lang:default highlight:0 decode:true \">CREATE INDEX ism \r\nON `default` ( DISTINCT `social-media` )\r\nWHERE type = \"person\";<\/pre>\n<p>To make sure your index works, you can execute the following N1QL query:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">EXPLAIN SELECT *\r\nFROM default\r\nWHERE type = 'person' AND ANY media IN `social-media` SATISFIES media.type = 'website' END;<\/pre>\n<p>When looking through the results of the\u00a0<code>EXPLAIN<\/code> you should see that it is using the\u00a0<code>ism<\/code> index that was previously created.<\/p>\n<p>Now just because the simplified syntax exists doesn&#8217;t mean you can&#8217;t use the previous syntax when array indexing. \u00a0The following would be a perfect example of why the previous syntax would still be valid:<\/p>\n<pre class=\"lang:default highlight:0 decode:true \">CREATE INDEX ism_website\r\nON `default` ( DISTINCT ARRAY media FOR media IN `social-media` WHEN media.type = 'website' END )\r\nWHERE type = 'person';<\/pre>\n<p>Notice that a\u00a0<code>WHEN<\/code> operator was used when creating the\u00a0<code>ism_website<\/code> index above.<\/p>\n<p>More information on array indexing can be found\u00a0<a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/current\/n1ql\/n1ql-language-reference\/indexing-arrays.html\" target=\"_blank\" rel=\"noopener\">here<\/a>, along with other useful documentation on creating indexes in Couchbase.<\/p>\n<h3>Relaxed Variable Match Requirement for Array Indexes<\/h3>\n<p>In 4.x releases, the array indexing required usage of exactly same variable names in the <code>SELECT<\/code> query that were\u00a0used in the <code>CREATE INDEX<\/code> statement. Find more details <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/4.6\/n1ql\/n1ql-language-reference\/indexing-arrays.html\" target=\"_blank\" rel=\"noopener\">here<\/a>.<\/p>\n<p>For example, referring to the previous queries seen\u00a0above, note that the variable <code>media<\/code> that is used to iterate through the array <code>social-media<\/code> is very important. Array indexing in 4.x mandates the exact variable name <code>media<\/code> to be used in the previous\u00a0<code>SELECT<\/code> query.<\/p>\n<p>Couchbase 5.0 release relaxes this requirement, and following query would work perfectly fine:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">EXPLAIN SELECT *\r\nFROM default\r\nUSE INDEX (ism)\r\nWHERE type = 'person' AND ANY m IN `social-media` SATISFIES m.type = 'website' END;<\/pre>\n<p>Note that, the index <code>ism<\/code> uses variable name <code>media<\/code>, but the query above\u00a0uses <code>m<\/code>. Still, the above query\u00a0can use the index <code>ism<\/code> successfully.<\/p>\n<h3>A Relaxed Whole Array Index Key Requirement for Array Indexes<\/h3>\n<p>Also recall, in 4.x releases, the covered array indexing requires the whole array attribute as a mandatory index-key in the array index definition. \u00a0For example, take the following query again:<\/p>\n<pre class=\"lang:default highlight:0 decode:true \">EXPLAIN SELECT *\r\nFROM default\r\nWHERE type = 'person' AND ANY media IN `social-media` SATISFIES media.type = 'website' END;<\/pre>\n<p>The covered array index corresponding to the above query would be:<\/p>\n<pre class=\"lang:default highlight:0 decode:true \">CREATE INDEX ism_covered \r\nON `default` ( DISTINCT ARRAY media FOR media IN `social-media` END,  `social-media`)\r\nWHERE type = 'person';<\/pre>\n<p>Note that, the second index key <code>social-media<\/code> is mandatory, for example to cover following query:<\/p>\n<pre class=\"lang:default highlight:0 decode:true \">EXPLAIN SELECT media\r\nFROM default\r\nWHERE type = 'person' AND ANY media IN `social-media` SATISFIES media IS NOT NULL END;<\/pre>\n<p>In Couchbase 5.0, this same query will be covered by index <code>ism<\/code> at the very start of this article.<\/p>\n<p>It is important to note that, this feature brings lot of power to Array Indexes. Because, now each entry in the array index consumes less storage space and memory. It enables following benefits:<\/p>\n<ul>\n<li>Usage of covered array indexes for larger arrays<\/li>\n<li>Brings more efficiency and performance to queries using covered array indexes<\/li>\n<\/ul>\n<h2>Indexing Document Meta Information<\/h2>\n<p>Let&#8217;s take a turn here and discuss the new meta information that can be indexed. \u00a0Previously indexes could be created on the <code>meta().id<\/code> property, but now both the <code>meta().cas<\/code> and <code>meta().expiration<\/code> properties are supported.<\/p>\n<p>So how do we create an index that uses the meta properties as keys? \u00a0It isn&#8217;t any different from what you already know. \u00a0Take the following covering indexes for example:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">CREATE INDEX idx_cas\r\nON `default` ( META().cas, META().expiration )\r\n\r\nCREATE INDEX idx_exp\r\nON `default` ( META().expiration )<\/pre>\n<p>Now if I wanted to use the\u00a0<code>idx_cas<\/code>\u00a0and <code>idx_exp<\/code> indexes in a N1QL query, I could do something like the following:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">SELECT META().id, META().cas\r\nFROM default\r\nWHERE META().cas &gt; 1489531586248179712;\r\n\r\nSELECT META().id, META().expiration\r\nFROM default\r\nWHERE META().expiration &gt; NOW_MILLIS();<\/pre>\n<p>So why would being able to index these properties? \u00a0Well, what if you wanted to do a query for all documents that had expired today or all documents that were modified today?<\/p>\n<p>For more information on the CAS and expiration properties, visit <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/4.6\/sdk\/core-operations.html#story-h2-8\" target=\"_blank\" rel=\"noopener\">here<\/a>. \u00a0For more information on indexing or using N1QL with Couchbase, check out the <a href=\"https:\/\/www.couchbase.com\/developers\/\" target=\"_blank\" rel=\"noopener\">Couchbase Developer Portal<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>With the recent March 2017 Developer build of Couchbase there were many bug fixes, but also feature enhancements to core technologies like N1QL. \u00a0For example, now indexes can be created on various meta information such as the document cas and [&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":[1865,1900,1505,1725],"ppma_author":[9032],"class_list":["post-2987","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-server","category-n1ql-query","tag-array","tag-cas","tag-index","tag-nosql-database"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.9 (Yoast SEO v25.9) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Feature Enhancements to N1QL in the Couchbase Server 5.0 March Developer Build<\/title>\n<meta name=\"description\" content=\"The March 2017 Developer Edition of Couchbase comes with many bug fixes, but also feature enhancements to N1QL and indexing.\" \/>\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\/feature-enhancements-n1ql-couchbase-server-5-march-developer\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Feature Enhancements to N1QL in the Couchbase Server 5.0 March Developer Build\" \/>\n<meta property=\"og:description\" content=\"The March 2017 Developer Edition of Couchbase comes with many bug fixes, but also feature enhancements to N1QL and indexing.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/feature-enhancements-n1ql-couchbase-server-5-march-developer\/\" \/>\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-03-17T15:50:45+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T01:46:21+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\/feature-enhancements-n1ql-couchbase-server-5-march-developer\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/feature-enhancements-n1ql-couchbase-server-5-march-developer\/\"},\"author\":{\"name\":\"Nic Raboy, Developer Advocate, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1\"},\"headline\":\"Feature Enhancements to N1QL in the Couchbase Server 5.0 March Developer Build\",\"datePublished\":\"2017-03-17T15:50:45+00:00\",\"dateModified\":\"2025-06-14T01:46:21+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/feature-enhancements-n1ql-couchbase-server-5-march-developer\/\"},\"wordCount\":648,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/feature-enhancements-n1ql-couchbase-server-5-march-developer\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"array\",\"cas\",\"Index\",\"NoSQL Database\"],\"articleSection\":[\"Couchbase Server\",\"SQL++ \/ N1QL Query\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/feature-enhancements-n1ql-couchbase-server-5-march-developer\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/feature-enhancements-n1ql-couchbase-server-5-march-developer\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/feature-enhancements-n1ql-couchbase-server-5-march-developer\/\",\"name\":\"Feature Enhancements to N1QL in the Couchbase Server 5.0 March Developer Build\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/feature-enhancements-n1ql-couchbase-server-5-march-developer\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/feature-enhancements-n1ql-couchbase-server-5-march-developer\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2017-03-17T15:50:45+00:00\",\"dateModified\":\"2025-06-14T01:46:21+00:00\",\"description\":\"The March 2017 Developer Edition of Couchbase comes with many bug fixes, but also feature enhancements to N1QL and indexing.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/feature-enhancements-n1ql-couchbase-server-5-march-developer\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/feature-enhancements-n1ql-couchbase-server-5-march-developer\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/feature-enhancements-n1ql-couchbase-server-5-march-developer\/#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\/feature-enhancements-n1ql-couchbase-server-5-march-developer\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Feature Enhancements to N1QL in the Couchbase Server 5.0 March Developer Build\"}]},{\"@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":"Feature Enhancements to N1QL in the Couchbase Server 5.0 March Developer Build","description":"The March 2017 Developer Edition of Couchbase comes with many bug fixes, but also feature enhancements to N1QL and indexing.","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\/feature-enhancements-n1ql-couchbase-server-5-march-developer\/","og_locale":"en_US","og_type":"article","og_title":"Feature Enhancements to N1QL in the Couchbase Server 5.0 March Developer Build","og_description":"The March 2017 Developer Edition of Couchbase comes with many bug fixes, but also feature enhancements to N1QL and indexing.","og_url":"https:\/\/www.couchbase.com\/blog\/feature-enhancements-n1ql-couchbase-server-5-march-developer\/","og_site_name":"The Couchbase Blog","article_author":"https:\/\/www.facebook.com\/thepolyglotdeveloper","article_published_time":"2017-03-17T15:50:45+00:00","article_modified_time":"2025-06-14T01:46:21+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\/feature-enhancements-n1ql-couchbase-server-5-march-developer\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/feature-enhancements-n1ql-couchbase-server-5-march-developer\/"},"author":{"name":"Nic Raboy, Developer Advocate, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1"},"headline":"Feature Enhancements to N1QL in the Couchbase Server 5.0 March Developer Build","datePublished":"2017-03-17T15:50:45+00:00","dateModified":"2025-06-14T01:46:21+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/feature-enhancements-n1ql-couchbase-server-5-march-developer\/"},"wordCount":648,"commentCount":1,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/feature-enhancements-n1ql-couchbase-server-5-march-developer\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["array","cas","Index","NoSQL Database"],"articleSection":["Couchbase Server","SQL++ \/ N1QL Query"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/feature-enhancements-n1ql-couchbase-server-5-march-developer\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/feature-enhancements-n1ql-couchbase-server-5-march-developer\/","url":"https:\/\/www.couchbase.com\/blog\/feature-enhancements-n1ql-couchbase-server-5-march-developer\/","name":"Feature Enhancements to N1QL in the Couchbase Server 5.0 March Developer Build","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/feature-enhancements-n1ql-couchbase-server-5-march-developer\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/feature-enhancements-n1ql-couchbase-server-5-march-developer\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2017-03-17T15:50:45+00:00","dateModified":"2025-06-14T01:46:21+00:00","description":"The March 2017 Developer Edition of Couchbase comes with many bug fixes, but also feature enhancements to N1QL and indexing.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/feature-enhancements-n1ql-couchbase-server-5-march-developer\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/feature-enhancements-n1ql-couchbase-server-5-march-developer\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/feature-enhancements-n1ql-couchbase-server-5-march-developer\/#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\/feature-enhancements-n1ql-couchbase-server-5-march-developer\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Feature Enhancements to N1QL in the Couchbase Server 5.0 March Developer Build"}]},{"@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\/2987","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=2987"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/2987\/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=2987"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=2987"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=2987"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=2987"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}