{"id":1566,"date":"2014-12-16T19:24:22","date_gmt":"2014-12-16T19:24:21","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=1566"},"modified":"2025-06-13T23:50:18","modified_gmt":"2025-06-14T06:50:18","slug":"couchbase-net-sdk-20-development-series-new-view-querying-syntax","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-development-series-new-view-querying-syntax\/","title":{"rendered":"Couchbase .NET SDK 2.0 Development Series: New View Querying Syntax"},"content":{"rendered":"<p>A core goal of the new Couchbase .NET SDK is improving the developer experience. We are working to achieve this goal in several ways:<\/p>\n<ul>\n<li>Reducing the number of steps (read App.Config \u201cfree\u201d) required to get up and running with Couchbase and the Couchbase .NET client<\/li>\n<li>Providing a consistent, uniform interface across all Couchbase client SDK\u2019s<\/li>\n<li>Exposing easy to use, flexible, powerful new ways of querying documents and unstructured data<\/li>\n<\/ul>\n<p>This post focuses on the last bullet point: providing rich query API\u2019s to Couchbase documents. Specifically, it deals with new View querying enhancements we are adding to the SDK\u2019s to make it dead-simple for you to get YOUR data, how YOU want it!<\/p>\n<h2>Querying in Couchbase<\/h2>\n<p>The Couchbase lineage is strongly influenced by two different persistence implementations: a Key\/Value database and a Document database. K\/V stores give you high throughput and low latency, but at cost: lack of flexibility.<\/p>\n<p>Document databases build on K\/V store concept for storing documents using the key as the primary index, but then add additional features for secondary and composite indexing and most importantly, features for querying across a set of keys and aggregating or filtering the results by emitting pro<\/p>\n<p>jections off the primary document. In Couchbase we use Views created from Map\/Reduce functions and expose them via a REST API which clients the use to query their documents.<\/p>\n<p>In Couchbase Server 3.0, we are providing a third way of accessing your data: <a href=\"https:\/\/www.couchbase.com\/community\/\">N1QL, a SQL-like query language<\/a>. We plan on exposing N1QL through ad-hoc queries and a LINQ, provider in the future \u2013 will cover this in depth in future posts.<\/p>\n<h2>New View Querying Syntax<\/h2>\n<p>For the new .NET client, we have developed a <a href=\"https:\/\/martinfowler.com\/bliki\/FluentInterface.html\">Fluent Interface<\/a> abstraction around the <a href=\"https:\/\/docs.couchbase.com\/couchbase-manual-2.5\/cb-rest-api\/\">View Rest API<\/a>\u00a0that provides an intuitive and natural way of accessing and querying documents. Here is an example:<\/p>\n<p class=\"rtecenter\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-5301\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2014\/12\/view-query-syntax-net-client-2-300x172.png\" alt=\"\" width=\"300\" height=\"172\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/view-query-syntax-net-client-2-300x172.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/view-query-syntax-net-client-2-768x441.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/view-query-syntax-net-client-2-20x11.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/view-query-syntax-net-client-2.png 800w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>Here we<\/p>\n<p>are creating a Cluster object, which is an observer for config changes happening on the Couchbase Server cluster, and using it to open a bucket instance. Then we create a ViewQuery object passing \u201ctrue\u201d as a parameter, which indicates that we are working with a <a href=\"https:\/\/docs.couchbase.com\/couchbase-manual-2.5\/cb-admin\/#development-and-production-views\">development view<\/a>. Then we chain together a series of function calls which be used to generate are REST request using the fluent interface mechanism. The From(\u2026) method specifies the bucket and design document to target and the View(\u2026) method is the Couchbase View we are accessing.<\/p>\n<p>After we construct are ViewQuery object, we pass it into the Get(\u2026) method which will execute the REST request and then serialize the results to a dynamic type. The benefits of using a dynamic type here is that you do not have to have an explicitly typed POCO defined at compile time, which provides quite a bit of flexibility. Finally, we iterate through the rows and display the results.<\/p>\n<p>Note that by the time the developer-preview is released, the explicitly cast to IViewSupportable will not be required and there may be a few other changes, like the requirement to pass the bucket name into the From(\u2026) method.<\/p>\n<h2>Developer Preview!<\/h2>\n<p>You may have noticed that I mentioned DP in this post and yes, we have one planned, but are not publically announcing the date until a bit later this month or early next month.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A core goal of the new Couchbase .NET SDK is improving the developer experience. We are working to achieve this goal in several ways: Reducing the number of steps (read App.Config \u201cfree\u201d) required to get up and running with Couchbase [&hellip;]<\/p>\n","protected":false},"author":21,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1811,1812],"tags":[1285,1241],"ppma_author":[8970],"class_list":["post-1566","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dotnet","category-n1ql-query","tag-developer-preview","tag-views"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.2 (Yoast SEO v26.2) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Couchbase .NET SDK 2.0 Development: New View Querying Syntax<\/title>\n<meta name=\"description\" content=\"The post focuses on providing rich query API\u2019s to Couchbase documents. Also, it deals with new view querying enhancements to the SDK\u2019s to get the data.\" \/>\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\/couchbase-net-sdk-20-development-series-new-view-querying-syntax\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Couchbase .NET SDK 2.0 Development Series: New View Querying Syntax\" \/>\n<meta property=\"og:description\" content=\"The post focuses on providing rich query API\u2019s to Couchbase documents. Also, it deals with new view querying enhancements to the SDK\u2019s to get the data.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-development-series-new-view-querying-syntax\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2014-12-16T19:24:21+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T06:50:18+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/view-query-syntax-net-client-2.png\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"459\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Jeff Morris, Senior Software Engineer, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@jeffrysmorris\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeff Morris, Senior Software Engineer, 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\/couchbase-net-sdk-20-development-series-new-view-querying-syntax\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-development-series-new-view-querying-syntax\/\"},\"author\":{\"name\":\"Jeff Morris, Senior Software Engineer, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/b678bdd9f7b21a33d43ea965865a3341\"},\"headline\":\"Couchbase .NET SDK 2.0 Development Series: New View Querying Syntax\",\"datePublished\":\"2014-12-16T19:24:21+00:00\",\"dateModified\":\"2025-06-14T06:50:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-development-series-new-view-querying-syntax\/\"},\"wordCount\":557,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-development-series-new-view-querying-syntax\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"Developer Preview\",\"views\"],\"articleSection\":[\".NET\",\"SQL++ \/ N1QL Query\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-development-series-new-view-querying-syntax\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-development-series-new-view-querying-syntax\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-development-series-new-view-querying-syntax\/\",\"name\":\"Couchbase .NET SDK 2.0 Development: New View Querying Syntax\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-development-series-new-view-querying-syntax\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-development-series-new-view-querying-syntax\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2014-12-16T19:24:21+00:00\",\"dateModified\":\"2025-06-14T06:50:18+00:00\",\"description\":\"The post focuses on providing rich query API\u2019s to Couchbase documents. Also, it deals with new view querying enhancements to the SDK\u2019s to get the data.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-development-series-new-view-querying-syntax\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-development-series-new-view-querying-syntax\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-development-series-new-view-querying-syntax\/#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\/couchbase-net-sdk-20-development-series-new-view-querying-syntax\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Couchbase .NET SDK 2.0 Development Series: New View Querying Syntax\"}]},{\"@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\/b678bdd9f7b21a33d43ea965865a3341\",\"name\":\"Jeff Morris, Senior Software Engineer, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/73188ee2831025d81740e12e1ed80812\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5f910befdbd58de8bac85293df7f544680843061ecc921ba7d293d6d52076ab3?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/5f910befdbd58de8bac85293df7f544680843061ecc921ba7d293d6d52076ab3?s=96&d=mm&r=g\",\"caption\":\"Jeff Morris, Senior Software Engineer, Couchbase\"},\"description\":\"Jeff Morris is a Senior Software Engineer at Couchbase. Prior to joining Couchbase, Jeff spent six years at Source Interlink as an Enterprise Web Architect. Jeff is responsible for the development of Couchbase SDKs and how to integrate with N1QL (query language).\",\"sameAs\":[\"https:\/\/x.com\/jeffrysmorris\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/author\/jeff-morris\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Couchbase .NET SDK 2.0 Development: New View Querying Syntax","description":"The post focuses on providing rich query API\u2019s to Couchbase documents. Also, it deals with new view querying enhancements to the SDK\u2019s to get the data.","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\/couchbase-net-sdk-20-development-series-new-view-querying-syntax\/","og_locale":"en_US","og_type":"article","og_title":"Couchbase .NET SDK 2.0 Development Series: New View Querying Syntax","og_description":"The post focuses on providing rich query API\u2019s to Couchbase documents. Also, it deals with new view querying enhancements to the SDK\u2019s to get the data.","og_url":"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-development-series-new-view-querying-syntax\/","og_site_name":"The Couchbase Blog","article_published_time":"2014-12-16T19:24:21+00:00","article_modified_time":"2025-06-14T06:50:18+00:00","og_image":[{"width":800,"height":459,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/view-query-syntax-net-client-2.png","type":"image\/png"}],"author":"Jeff Morris, Senior Software Engineer, Couchbase","twitter_card":"summary_large_image","twitter_creator":"@jeffrysmorris","twitter_misc":{"Written by":"Jeff Morris, Senior Software Engineer, Couchbase","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-development-series-new-view-querying-syntax\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-development-series-new-view-querying-syntax\/"},"author":{"name":"Jeff Morris, Senior Software Engineer, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/b678bdd9f7b21a33d43ea965865a3341"},"headline":"Couchbase .NET SDK 2.0 Development Series: New View Querying Syntax","datePublished":"2014-12-16T19:24:21+00:00","dateModified":"2025-06-14T06:50:18+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-development-series-new-view-querying-syntax\/"},"wordCount":557,"commentCount":2,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-development-series-new-view-querying-syntax\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["Developer Preview","views"],"articleSection":[".NET","SQL++ \/ N1QL Query"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-development-series-new-view-querying-syntax\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-development-series-new-view-querying-syntax\/","url":"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-development-series-new-view-querying-syntax\/","name":"Couchbase .NET SDK 2.0 Development: New View Querying Syntax","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-development-series-new-view-querying-syntax\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-development-series-new-view-querying-syntax\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2014-12-16T19:24:21+00:00","dateModified":"2025-06-14T06:50:18+00:00","description":"The post focuses on providing rich query API\u2019s to Couchbase documents. Also, it deals with new view querying enhancements to the SDK\u2019s to get the data.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-development-series-new-view-querying-syntax\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-development-series-new-view-querying-syntax\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-development-series-new-view-querying-syntax\/#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\/couchbase-net-sdk-20-development-series-new-view-querying-syntax\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Couchbase .NET SDK 2.0 Development Series: New View Querying Syntax"}]},{"@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\/b678bdd9f7b21a33d43ea965865a3341","name":"Jeff Morris, Senior Software Engineer, Couchbase","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/73188ee2831025d81740e12e1ed80812","url":"https:\/\/secure.gravatar.com\/avatar\/5f910befdbd58de8bac85293df7f544680843061ecc921ba7d293d6d52076ab3?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5f910befdbd58de8bac85293df7f544680843061ecc921ba7d293d6d52076ab3?s=96&d=mm&r=g","caption":"Jeff Morris, Senior Software Engineer, Couchbase"},"description":"Jeff Morris is a Senior Software Engineer at Couchbase. Prior to joining Couchbase, Jeff spent six years at Source Interlink as an Enterprise Web Architect. Jeff is responsible for the development of Couchbase SDKs and how to integrate with N1QL (query language).","sameAs":["https:\/\/x.com\/jeffrysmorris"],"url":"https:\/\/www.couchbase.com\/blog\/author\/jeff-morris\/"}]}},"authors":[{"term_id":8970,"user_id":21,"is_guest":0,"slug":"jeff-morris","display_name":"Jeff Morris, Senior Software Engineer, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/5f910befdbd58de8bac85293df7f544680843061ecc921ba7d293d6d52076ab3?s=96&d=mm&r=g","author_category":"","last_name":"Jeff Morris, Senior Software Engineer, Couchbase","first_name":"Jeff","job_title":"","user_url":"","description":"Jeff Morris is a Senior Software Engineer at Couchbase. Prior to joining Couchbase, Jeff spent six years at Source Interlink as an Enterprise Web Architect. Jeff is responsible for the development of Couchbase SDKs and how to integrate with N1QL (query language)."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/1566","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\/21"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=1566"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/1566\/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=1566"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=1566"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=1566"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=1566"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}