{"id":2374,"date":"2016-08-23T14:44:13","date_gmt":"2016-08-23T14:44:12","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2374"},"modified":"2025-06-13T19:30:02","modified_gmt":"2025-06-14T02:30:02","slug":"copying-documents-between-buckets-in-couchbase","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/copying-documents-between-buckets-in-couchbase\/","title":{"rendered":"Copying Documents Between Buckets in Couchbase"},"content":{"rendered":"<div id=\"preamble\">\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>When I\u2019m at a user group or conference, people often come up to me afterwards with good questions. This is a great way for me to get blog post ideas: if they have a question, chances are lots of other people have the same one. It\u2019s also a great way for me to get to know <a href=\"https:\/\/www.couchbase.com\/developers\/?utm_source=blogs&amp;utm_medium=link&amp;utm_campaign=blogs\">Couchbase<\/a> better.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>This post is for one of those questions: <strong>can I copy documents from one bucket to another<\/strong>?<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"truecopy-from-bucket-to-bucket\">Copy from bucket to bucket<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>Yes! In fact, if you\u2019ve done this sort of thing in SQL, then you are not too far from already knowing the answer.<\/p>\n<\/div>\n<div class=\"imageblock\">\n<div class=\"content\" style=\"text-align: center\"><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/august\/copying-documents-between-buckets-in-couchbase\/001buckets.jpg\" alt=\"Fire buckets Image Licensed through Creative Commons via Paul Harrop - https:\/\/www.geograph.org.uk\/photo\/2666296\" \/><\/div>\n<div class=\"title\" style=\"text-align: center\">Fire buckets Image Licensed through Creative Commons <a href=\"https:\/\/www.geograph.org.uk\/photo\/2666296\">via Paul Harrop<\/a><\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>There are command line tools to <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/current\/cli\/cbbackup-tool.html?utm_source=blogs&amp;utm_medium=link&amp;utm_campaign=blogs\">backup<\/a>\/<a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/4.5\/cli\/cbrestore-tool.html?utm_source=blogs&amp;utm_medium=link&amp;utm_campaign=blogs\">restore<\/a> a bucket, but for this post, I\u2019m going to assume that what you want is to make a copy of some documents from bucket A into bucket B.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>It\u2019s as easy as using a <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/4.5\/n1ql\/n1ql-language-reference\/insert.html?utm_source=blogs&amp;utm_medium=link&amp;utm_campaign=blogs\">N1QL INSERT<\/a>.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Start by creating a N1QL <code><code>SELECT<\/code><\/code> to get the documents you want out of the first bucket. I\u2019m going to show a very simplified <code><code>SELECT<\/code><\/code> that gets <em>all<\/em> the documents from my <code><code>default<\/code><\/code> bucket. If you only want a subset, you can use a <code><code>WHERE<\/code><\/code> clause.<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlightjs highlight\"><code class=\"language-SQL\">SELECT META().id _k, _v\r\nfrom `default` _v<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>Since we\u2019re copying to another bucket, we need both the key and the document itself. This query selects the document key using the <code><code>META()<\/code><\/code> function, and selects the document using a <code><code>_v<\/code><\/code> alias.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Next, I\u2019ll create an <code><code>INSERT<\/code><\/code> to put these selected documents into another bucket, which I called <code><code>target<\/code><\/code>.<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlightjs highlight\"><code class=\"language-SQL\">INSERT INTO `target` (KEY _k, VALUE _v)\r\nSELECT META().id _k, _v\r\nfrom `default` _v<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>An <code><code>INSERT<\/code><\/code> needs a key and a value. I have those from the <code><code>SELECT<\/code><\/code>. All done.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"truemore-information-about-n1ql-insert\">More information about N1QL INSERT<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>The link:<a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/4.5\/n1ql\/n1ql-language-reference\/insert.html?utm_source=blogs&amp;utm_medium=link&amp;utm_campaign=blogs\">N1QL INSERT<\/a> is very powerful, and there are a lot of other things you can do with it:<\/p>\n<\/div>\n<div class=\"ulist\">\n<ul>\n<li>Insert a single document<\/li>\n<li>Bulk inserts<\/li>\n<li>Insert values using <code><code>SELECT<\/code><\/code> (which is similar to what we did in this post)<\/li>\n<li>Insert value with a combination key, using a projection<\/li>\n<li>Insert values using subqueries<\/li>\n<li>Insert values using N1QL functions<\/li>\n<li>Using prepared <code><code>INSERT<\/code><\/code> queries<\/li>\n<\/ul>\n<\/div>\n<div class=\"paragraph\">\n<p>Note that typical caveats apply: make sure you have good indexing when you are writing the SELECT. If you are copying a lot of documents, you may want to temporarily adjust the timeout. Documents in a bucket must all have a unique key. There is no rollback when inserting multiple documents: if an <code><code>INSERT<\/code><\/code> fails on the 10th document out of 100, the first 9 documents are still inserted.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>For more in-depth answers about N1QL, check out the <a href=\"https:\/\/www.couchbase.com\/forums\/c\/sql\/16\">Couchbase N1QL Forum<\/a>.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p><a href=\"https:\/\/twitter.com\/mgroves\">Follow me on Twitter<\/a> if you have any questions: your question might become my next blog post!<\/p>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>When I\u2019m at a user group or conference, people often come up to me afterwards with good questions. This is a great way for me to get blog post ideas: if they have a question, chances are lots of other [&hellip;]<\/p>\n","protected":false},"author":71,"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":[],"ppma_author":[8937],"class_list":["post-2374","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-server","category-n1ql-query"],"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>Copying Documents Between Buckets: Process in Couchbase<\/title>\n<meta name=\"description\" content=\"Is copying documents between buckets possible in Couchbase? This post answers the question of whether you can copy documents from one bucket to another.\" \/>\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\/copying-documents-between-buckets-in-couchbase\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Copying Documents Between Buckets in Couchbase\" \/>\n<meta property=\"og:description\" content=\"Is copying documents between buckets possible in Couchbase? This post answers the question of whether you can copy documents from one bucket to another.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/copying-documents-between-buckets-in-couchbase\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2016-08-23T14:44:12+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T02:30:02+00:00\" \/>\n<meta name=\"author\" content=\"Matthew Groves\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@mgroves\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Matthew Groves\" \/>\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\/copying-documents-between-buckets-in-couchbase\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/copying-documents-between-buckets-in-couchbase\/\"},\"author\":{\"name\":\"Matthew Groves\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58\"},\"headline\":\"Copying Documents Between Buckets in Couchbase\",\"datePublished\":\"2016-08-23T14:44:12+00:00\",\"dateModified\":\"2025-06-14T02:30:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/copying-documents-between-buckets-in-couchbase\/\"},\"wordCount\":440,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/copying-documents-between-buckets-in-couchbase\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"Couchbase Server\",\"SQL++ \/ N1QL Query\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/copying-documents-between-buckets-in-couchbase\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/copying-documents-between-buckets-in-couchbase\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/copying-documents-between-buckets-in-couchbase\/\",\"name\":\"Copying Documents Between Buckets: Process in Couchbase\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/copying-documents-between-buckets-in-couchbase\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/copying-documents-between-buckets-in-couchbase\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2016-08-23T14:44:12+00:00\",\"dateModified\":\"2025-06-14T02:30:02+00:00\",\"description\":\"Is copying documents between buckets possible in Couchbase? This post answers the question of whether you can copy documents from one bucket to another.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/copying-documents-between-buckets-in-couchbase\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/copying-documents-between-buckets-in-couchbase\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/copying-documents-between-buckets-in-couchbase\/#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\/copying-documents-between-buckets-in-couchbase\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Copying Documents Between Buckets in Couchbase\"}]},{\"@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\/3929663e372020321b0152dc4fa65a58\",\"name\":\"Matthew Groves\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/ba51e6aacc53995c323a634e4502ef54\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g\",\"caption\":\"Matthew Groves\"},\"description\":\"Matthew D. Groves is a guy who loves to code. It doesn't matter if it's C#, jQuery, or PHP: he'll submit pull requests for anything. He has been coding professionally ever since he wrote a QuickBASIC point-of-sale app for his parent's pizza shop back in the 90s. He currently works as a Senior Product Marketing Manager for Couchbase. His free time is spent with his family, watching the Reds, and getting involved in the developer community. He is the author of AOP in .NET, Pro Microservices in .NET, a Pluralsight author, and a Microsoft MVP.\",\"sameAs\":[\"https:\/\/crosscuttingconcerns.com\",\"https:\/\/x.com\/mgroves\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/author\/matthew-groves\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Copying Documents Between Buckets: Process in Couchbase","description":"Is copying documents between buckets possible in Couchbase? This post answers the question of whether you can copy documents from one bucket to another.","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\/copying-documents-between-buckets-in-couchbase\/","og_locale":"en_US","og_type":"article","og_title":"Copying Documents Between Buckets in Couchbase","og_description":"Is copying documents between buckets possible in Couchbase? This post answers the question of whether you can copy documents from one bucket to another.","og_url":"https:\/\/www.couchbase.com\/blog\/copying-documents-between-buckets-in-couchbase\/","og_site_name":"The Couchbase Blog","article_published_time":"2016-08-23T14:44:12+00:00","article_modified_time":"2025-06-14T02:30:02+00:00","author":"Matthew Groves","twitter_card":"summary_large_image","twitter_creator":"@mgroves","twitter_misc":{"Written by":"Matthew Groves","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/copying-documents-between-buckets-in-couchbase\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/copying-documents-between-buckets-in-couchbase\/"},"author":{"name":"Matthew Groves","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58"},"headline":"Copying Documents Between Buckets in Couchbase","datePublished":"2016-08-23T14:44:12+00:00","dateModified":"2025-06-14T02:30:02+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/copying-documents-between-buckets-in-couchbase\/"},"wordCount":440,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/copying-documents-between-buckets-in-couchbase\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["Couchbase Server","SQL++ \/ N1QL Query"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/copying-documents-between-buckets-in-couchbase\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/copying-documents-between-buckets-in-couchbase\/","url":"https:\/\/www.couchbase.com\/blog\/copying-documents-between-buckets-in-couchbase\/","name":"Copying Documents Between Buckets: Process in Couchbase","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/copying-documents-between-buckets-in-couchbase\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/copying-documents-between-buckets-in-couchbase\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2016-08-23T14:44:12+00:00","dateModified":"2025-06-14T02:30:02+00:00","description":"Is copying documents between buckets possible in Couchbase? This post answers the question of whether you can copy documents from one bucket to another.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/copying-documents-between-buckets-in-couchbase\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/copying-documents-between-buckets-in-couchbase\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/copying-documents-between-buckets-in-couchbase\/#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\/copying-documents-between-buckets-in-couchbase\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Copying Documents Between Buckets in Couchbase"}]},{"@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\/3929663e372020321b0152dc4fa65a58","name":"Matthew Groves","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/ba51e6aacc53995c323a634e4502ef54","url":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g","caption":"Matthew Groves"},"description":"Matthew D. Groves is a guy who loves to code. It doesn't matter if it's C#, jQuery, or PHP: he'll submit pull requests for anything. He has been coding professionally ever since he wrote a QuickBASIC point-of-sale app for his parent's pizza shop back in the 90s. He currently works as a Senior Product Marketing Manager for Couchbase. His free time is spent with his family, watching the Reds, and getting involved in the developer community. He is the author of AOP in .NET, Pro Microservices in .NET, a Pluralsight author, and a Microsoft MVP.","sameAs":["https:\/\/crosscuttingconcerns.com","https:\/\/x.com\/mgroves"],"url":"https:\/\/www.couchbase.com\/blog\/author\/matthew-groves\/"}]}},"authors":[{"term_id":8937,"user_id":71,"is_guest":0,"slug":"matthew-groves","display_name":"Matthew Groves","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g","author_category":"","last_name":"Groves","first_name":"Matthew","job_title":"","user_url":"https:\/\/crosscuttingconcerns.com","description":"Matthew D. Groves is a guy who loves to code.  It doesn't matter if it's C#, jQuery, or PHP: he'll submit pull requests for anything.  He has been coding professionally ever since he wrote a QuickBASIC point-of-sale app for his parent's pizza shop back in the 90s.  He currently works as a Senior Product Marketing Manager for Couchbase. His free time is spent with his family, watching the Reds, and getting involved in the developer community.  He is the author of AOP in .NET, Pro Microservices in .NET, a Pluralsight author, and a Microsoft MVP."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/2374","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\/71"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=2374"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/2374\/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=2374"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=2374"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=2374"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=2374"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}