{"id":3399,"date":"2016-03-15T02:35:44","date_gmt":"2016-03-15T02:35:44","guid":{"rendered":"http:\/\/www.garysieling.com\/blog\/?p=3399"},"modified":"2016-03-15T02:35:44","modified_gmt":"2016-03-15T02:35:44","slug":"rethinkdb-case-example","status":"publish","type":"post","link":"https:\/\/www.garysieling.com\/blog\/rethinkdb-case-example\/","title":{"rendered":"RethinkDB: CASE WHEN example"},"content":{"rendered":"<p>There are a couple ways to mimic the SQL &#8220;CASE WHEN&#8221; in RethinkDB.<\/p>\n<p>If the rows don&#8217;t have values in some columns, in SQL you&#8217;d default these with &#8220;CASE WHEN attr IS NULL &#8230; ELSE END&#8221;. To fix these, you can use map \/ merge: <\/p>\n<pre lang=\"javascript\">\nr.db('test').table('users')\n  .map(\n    (doc) => { return r.expr(\n      {\n        first_name: '',\n        last_name: ''\n      }\n    ).merge(doc) }\n  )\n<\/pre>\n<p>If you want to key off different values, you can use the &#8216;branch&#8217; function, like so:<\/p>\n<pre lang=\"javascript\">\nr.db('test')\n .table('users')\n .map( \n   (doc) => {\n     return {\n       first_name: \n         r.branch(\n           doc('first_name').eq('test'), \n           1, \n           2)  \n     }\n   }\n  )\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>There are a couple ways to mimic the SQL &#8220;CASE WHEN&#8221; in RethinkDB. If the rows don&#8217;t have values in some columns, in SQL you&#8217;d default these with &#8220;CASE WHEN attr IS NULL &#8230; ELSE END&#8221;. To fix these, you can use map \/ merge: r.db(&#8216;test&#8217;).table(&#8216;users&#8217;) .map( (doc) => { return r.expr( { first_name: &#8221;, &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.garysieling.com\/blog\/rethinkdb-case-example\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;RethinkDB: CASE WHEN example&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"footnotes":""},"categories":[4],"tags":[160,462,466,523],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.9 - aioseo.com -->\n\t<meta name=\"description\" content=\"There are a couple ways to mimic the SQL &quot;CASE WHEN&quot; in RethinkDB. If the rows don&#039;t have values in some columns, in SQL you&#039;d default these with &quot;CASE WHEN attr IS NULL ... ELSE END&quot;. To fix these, you can use map \/ merge: r.db(&#039;test&#039;).table(&#039;users&#039;) .map( (doc) =&gt; { return r.expr( { first_name: &#039;&#039;,\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"gary\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/www.garysieling.com\/blog\/rethinkdb-case-example\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.9\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Gary Sieling - Software Engineer\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"RethinkDB: CASE WHEN example - Gary Sieling\" \/>\n\t\t<meta property=\"og:description\" content=\"There are a couple ways to mimic the SQL &quot;CASE WHEN&quot; in RethinkDB. If the rows don&#039;t have values in some columns, in SQL you&#039;d default these with &quot;CASE WHEN attr IS NULL ... ELSE END&quot;. To fix these, you can use map \/ merge: r.db(&#039;test&#039;).table(&#039;users&#039;) .map( (doc) =&gt; { return r.expr( { first_name: &#039;&#039;,\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/www.garysieling.com\/blog\/rethinkdb-case-example\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2016-03-15T02:35:44+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2016-03-15T02:35:44+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"RethinkDB: CASE WHEN example - Gary Sieling\" \/>\n\t\t<meta name=\"twitter:description\" content=\"There are a couple ways to mimic the SQL &quot;CASE WHEN&quot; in RethinkDB. If the rows don&#039;t have values in some columns, in SQL you&#039;d default these with &quot;CASE WHEN attr IS NULL ... ELSE END&quot;. To fix these, you can use map \/ merge: r.db(&#039;test&#039;).table(&#039;users&#039;) .map( (doc) =&gt; { return r.expr( { first_name: &#039;&#039;,\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/rethinkdb-case-example\\\/#blogposting\",\"name\":\"RethinkDB: CASE WHEN example - Gary Sieling\",\"headline\":\"RethinkDB: CASE WHEN example\",\"author\":{\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/author\\\/gary\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/#organization\"},\"datePublished\":\"2016-03-15T02:35:44+00:00\",\"dateModified\":\"2016-03-15T02:35:44+00:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/rethinkdb-case-example\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/rethinkdb-case-example\\\/#webpage\"},\"articleSection\":\"Code Examples, databases, reql, rethinkdb, sql\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/rethinkdb-case-example\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.garysieling.com\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/category\\\/code-examples\\\/#listItem\",\"name\":\"Code Examples\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/category\\\/code-examples\\\/#listItem\",\"position\":2,\"name\":\"Code Examples\",\"item\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/category\\\/code-examples\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/rethinkdb-case-example\\\/#listItem\",\"name\":\"RethinkDB: CASE WHEN example\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/rethinkdb-case-example\\\/#listItem\",\"position\":3,\"name\":\"RethinkDB: CASE WHEN example\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/category\\\/code-examples\\\/#listItem\",\"name\":\"Code Examples\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/#organization\",\"name\":\"Gary Sieling\",\"description\":\"Software Engineer\",\"url\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/author\\\/gary\\\/#author\",\"url\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/author\\\/gary\\\/\",\"name\":\"gary\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/rethinkdb-case-example\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0be925276d848ffe98a6a9dc8cf33e67?s=96&d=identicon&r=g\",\"width\":96,\"height\":96,\"caption\":\"gary\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/rethinkdb-case-example\\\/#webpage\",\"url\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/rethinkdb-case-example\\\/\",\"name\":\"RethinkDB: CASE WHEN example - Gary Sieling\",\"description\":\"There are a couple ways to mimic the SQL \\\"CASE WHEN\\\" in RethinkDB. If the rows don't have values in some columns, in SQL you'd default these with \\\"CASE WHEN attr IS NULL ... ELSE END\\\". To fix these, you can use map \\\/ merge: r.db('test').table('users') .map( (doc) => { return r.expr( { first_name: '',\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/rethinkdb-case-example\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/author\\\/gary\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/author\\\/gary\\\/#author\"},\"datePublished\":\"2016-03-15T02:35:44+00:00\",\"dateModified\":\"2016-03-15T02:35:44+00:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/\",\"name\":\"Gary Sieling\",\"description\":\"Software Engineer\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"RethinkDB: CASE WHEN example - Gary Sieling","description":"There are a couple ways to mimic the SQL \"CASE WHEN\" in RethinkDB. If the rows don't have values in some columns, in SQL you'd default these with \"CASE WHEN attr IS NULL ... ELSE END\". To fix these, you can use map \/ merge: r.db('test').table('users') .map( (doc) => { return r.expr( { first_name: '',","canonical_url":"https:\/\/www.garysieling.com\/blog\/rethinkdb-case-example\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/www.garysieling.com\/blog\/rethinkdb-case-example\/#blogposting","name":"RethinkDB: CASE WHEN example - Gary Sieling","headline":"RethinkDB: CASE WHEN example","author":{"@id":"https:\/\/www.garysieling.com\/blog\/author\/gary\/#author"},"publisher":{"@id":"https:\/\/www.garysieling.com\/blog\/#organization"},"datePublished":"2016-03-15T02:35:44+00:00","dateModified":"2016-03-15T02:35:44+00:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/www.garysieling.com\/blog\/rethinkdb-case-example\/#webpage"},"isPartOf":{"@id":"https:\/\/www.garysieling.com\/blog\/rethinkdb-case-example\/#webpage"},"articleSection":"Code Examples, databases, reql, rethinkdb, sql"},{"@type":"BreadcrumbList","@id":"https:\/\/www.garysieling.com\/blog\/rethinkdb-case-example\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/www.garysieling.com\/blog#listItem","position":1,"name":"Home","item":"https:\/\/www.garysieling.com\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/www.garysieling.com\/blog\/category\/code-examples\/#listItem","name":"Code Examples"}},{"@type":"ListItem","@id":"https:\/\/www.garysieling.com\/blog\/category\/code-examples\/#listItem","position":2,"name":"Code Examples","item":"https:\/\/www.garysieling.com\/blog\/category\/code-examples\/","nextItem":{"@type":"ListItem","@id":"https:\/\/www.garysieling.com\/blog\/rethinkdb-case-example\/#listItem","name":"RethinkDB: CASE WHEN example"},"previousItem":{"@type":"ListItem","@id":"https:\/\/www.garysieling.com\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/www.garysieling.com\/blog\/rethinkdb-case-example\/#listItem","position":3,"name":"RethinkDB: CASE WHEN example","previousItem":{"@type":"ListItem","@id":"https:\/\/www.garysieling.com\/blog\/category\/code-examples\/#listItem","name":"Code Examples"}}]},{"@type":"Organization","@id":"https:\/\/www.garysieling.com\/blog\/#organization","name":"Gary Sieling","description":"Software Engineer","url":"https:\/\/www.garysieling.com\/blog\/"},{"@type":"Person","@id":"https:\/\/www.garysieling.com\/blog\/author\/gary\/#author","url":"https:\/\/www.garysieling.com\/blog\/author\/gary\/","name":"gary","image":{"@type":"ImageObject","@id":"https:\/\/www.garysieling.com\/blog\/rethinkdb-case-example\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/0be925276d848ffe98a6a9dc8cf33e67?s=96&d=identicon&r=g","width":96,"height":96,"caption":"gary"}},{"@type":"WebPage","@id":"https:\/\/www.garysieling.com\/blog\/rethinkdb-case-example\/#webpage","url":"https:\/\/www.garysieling.com\/blog\/rethinkdb-case-example\/","name":"RethinkDB: CASE WHEN example - Gary Sieling","description":"There are a couple ways to mimic the SQL \"CASE WHEN\" in RethinkDB. If the rows don't have values in some columns, in SQL you'd default these with \"CASE WHEN attr IS NULL ... ELSE END\". To fix these, you can use map \/ merge: r.db('test').table('users') .map( (doc) => { return r.expr( { first_name: '',","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/www.garysieling.com\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/www.garysieling.com\/blog\/rethinkdb-case-example\/#breadcrumblist"},"author":{"@id":"https:\/\/www.garysieling.com\/blog\/author\/gary\/#author"},"creator":{"@id":"https:\/\/www.garysieling.com\/blog\/author\/gary\/#author"},"datePublished":"2016-03-15T02:35:44+00:00","dateModified":"2016-03-15T02:35:44+00:00"},{"@type":"WebSite","@id":"https:\/\/www.garysieling.com\/blog\/#website","url":"https:\/\/www.garysieling.com\/blog\/","name":"Gary Sieling","description":"Software Engineer","inLanguage":"en-US","publisher":{"@id":"https:\/\/www.garysieling.com\/blog\/#organization"}}]},"og:locale":"en_US","og:site_name":"Gary Sieling - Software Engineer","og:type":"article","og:title":"RethinkDB: CASE WHEN example - Gary Sieling","og:description":"There are a couple ways to mimic the SQL &quot;CASE WHEN&quot; in RethinkDB. If the rows don't have values in some columns, in SQL you'd default these with &quot;CASE WHEN attr IS NULL ... ELSE END&quot;. To fix these, you can use map \/ merge: r.db('test').table('users') .map( (doc) =&gt; { return r.expr( { first_name: '',","og:url":"https:\/\/www.garysieling.com\/blog\/rethinkdb-case-example\/","article:published_time":"2016-03-15T02:35:44+00:00","article:modified_time":"2016-03-15T02:35:44+00:00","twitter:card":"summary_large_image","twitter:title":"RethinkDB: CASE WHEN example - Gary Sieling","twitter:description":"There are a couple ways to mimic the SQL &quot;CASE WHEN&quot; in RethinkDB. If the rows don't have values in some columns, in SQL you'd default these with &quot;CASE WHEN attr IS NULL ... ELSE END&quot;. To fix these, you can use map \/ merge: r.db('test').table('users') .map( (doc) =&gt; { return r.expr( { first_name: '',"},"aioseo_meta_data":{"post_id":"3399","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"limit_modified_date":false,"created":"2023-02-04 16:42:33","updated":"2026-07-06 01:36:42","ai":null,"breadcrumb_settings":null,"seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.garysieling.com\/blog\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.garysieling.com\/blog\/category\/code-examples\/\" title=\"Code Examples\">Code Examples<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tRethinkDB: CASE WHEN example\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/www.garysieling.com\/blog"},{"label":"Code Examples","link":"https:\/\/www.garysieling.com\/blog\/category\/code-examples\/"},{"label":"RethinkDB: CASE WHEN example","link":"https:\/\/www.garysieling.com\/blog\/rethinkdb-case-example\/"}],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/posts\/3399"}],"collection":[{"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/comments?post=3399"}],"version-history":[{"count":0,"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/posts\/3399\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/media?parent=3399"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/categories?post=3399"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/tags?post=3399"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}