{"id":2022,"date":"2015-11-20T14:55:00","date_gmt":"2015-11-20T14:55:00","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2022"},"modified":"2023-06-27T07:14:32","modified_gmt":"2023-06-27T14:14:32","slug":"efficiently-querying-for-deleted-documents-with-n1ql","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/efficiently-querying-for-deleted-documents-with-n1ql\/","title":{"rendered":"Consulta eficiente de documentos exclu\u00eddos com a fun\u00e7\u00e3o MISSING do N1QL"},"content":{"rendered":"<p style=\"color: #333333;line-height: 20.8px;text-align: left\">Quando voc\u00ea est\u00e1 criando um aplicativo, muitas vezes surge uma situa\u00e7\u00e3o em que os usu\u00e1rios querem excluir algum conte\u00fado, mas voc\u00ea ainda precisa saber que os dados j\u00e1 existiram.<\/p>\n<p style=\"color: #333333;line-height: 20.8px;text-align: left\">Digamos que voc\u00ea esteja criando um aplicativo de mensagens. Talvez queira dar aos seus usu\u00e1rios a chance de restaurar conversas exclu\u00eddas.<\/p>\n<p style=\"color: #333333;line-height: 20.8px;text-align: left\">Portanto, quando algu\u00e9m quiser excluir uma conversa, voc\u00ea precisar\u00e1 fazer algo diferente de simplesmente excluir o documento do Couchbase. Em vez disso, voc\u00ea pode usar um sinalizador no corpo do JSON que identifique o documento como n\u00e3o ativo de alguma forma. Por exemplo:<\/p>\n<pre style=\"font-size: 13px;margin-left: 40px;color: #333333;line-height: 20.8px;text-align: left\" class=\"\">{\r\n    \"deleted\": true\r\n}<\/pre>\n<p style=\"color: #333333;line-height: 20.8px;text-align: left\">Abaixo disso, voc\u00ea criaria um \u00edndice GSI para ter acesso eficiente a todas essas informa\u00e7\u00f5es\u00a0<em>exclu\u00eddo<\/em>\u00a0conversas:<\/p>\n<pre style=\"font-size: 13px;margin-left: 40px;color: #333333;line-height: 20.8px;text-align: left\">CREATE INDEX deletedmsgs ON `conversations`(deleted);<\/pre>\n<p style=\"color: #333333;line-height: 20.8px;text-align: left\">Em seguida, para preencher a exibi\u00e7\u00e3o de conversas exclu\u00eddas na interface do usu\u00e1rio do seu aplicativo, voc\u00ea executaria um <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/products\/n1ql\/\">Consulta N1QL<\/a> tais como:<\/p>\n<pre style=\"font-size: 13px;margin-left: 40px;color: #333333;line-height: 20.8px;text-align: left\">SELECT * FROM `conversations` WHERE deleted = true;<\/pre>\n<p style=\"color: #333333;line-height: 20.8px;text-align: left\">At\u00e9 agora, tudo parece bastante \u00f3bvio.<\/p>\n<h2 style=\"color: #333333;line-height: 20.8px;text-align: left\">Adicionar isso a um conjunto de dados existente<\/h2>\n<p style=\"color: #333333;line-height: 20.8px;text-align: left\">Agora, o que acontece se voc\u00ea estiver apenas introduzindo esse recurso no seu aplicativo? \u00c9 prov\u00e1vel que voc\u00ea j\u00e1 tenha muitos milhares de conversas cujos documentos subjacentes n\u00e3o tenham o recurso\u00a0<em>exclu\u00eddo<\/em>\u00a0bandeira.<\/p>\n<p style=\"color: #333333;line-height: 20.8px;text-align: left\">Voc\u00ea pode pensar nisso como uma \u00f3tima oportunidade de usar a fun\u00e7\u00e3o\u00a0<em>EST\u00c1 FALTANDO<\/em>. Voc\u00ea estaria certo, mas talvez esteja pensando de forma um pouco diferente do que vou sugerir.<\/p>\n<p style=\"color: #333333;line-height: 20.8px;text-align: left\">Voc\u00ea\u00a0<em>coulc<\/em>\u00a0conta para documentos que n\u00e3o t\u00eam o\u00a0<em>exclu\u00eddo<\/em>\u00a0alterando sua consulta N1QL para algo como isto:<\/p>\n<pre style=\"font-size: 13px;margin-left: 40px;color: #333333;line-height: 20.8px;text-align: left\">SELECT * FROM `conversations` WHERE deleted = true OR deleted IS MISSING;<\/pre>\n<p>Para torn\u00e1-lo um pouco mais realista, tamb\u00e9m podemos filtrar nossa consulta com base na pessoa envolvida:<\/p>\n<pre style=\"font-size: 13px;margin-left: 40px;color: #333333;line-height: 20.8px;text-align: left\">SELECT * FROM `conversations` WHERE sender = user123 AND deleted = true OR deleted IS MISSING;<\/pre>\n<p>Isso faria o trabalho, mas n\u00e3o seria a maneira mais eficiente de faz\u00ea-lo.<\/p>\n<p>Quando introduzimos a palavra-chave MISSING do N1QL em uma situa\u00e7\u00e3o OR, acionamos o N1QL em uma varredura completa do documento: nossa consulta est\u00e1 solicitando que o N1QL verifique cada documento quanto \u00e0 presen\u00e7a da chave JSON exclu\u00edda. Nosso \u00edndice ajuda apenas com os documentos em que <em>exclu\u00eddo<\/em>\u00a0existe, porque ele n\u00e3o indexa documentos em que a chave n\u00e3o est\u00e1 presente.<\/p>\n<p>Em vez disso, nesse caso, seria melhor executar uma consulta \u00fanica que retornaria todos os documentos que est\u00e3o faltando\u00a0<em>exclu\u00eddo<\/em>. Poder\u00edamos ent\u00e3o trabalhar em cada uma delas e atualiz\u00e1-las para incluir\u00a0<em>exclu\u00eddo = falso<\/em> e, portanto, todos esses documentos estariam agora em nosso \u00edndice eficiente.<\/p>\n<p>Se a consulta demorar um pouco mais, n\u00e3o h\u00e1 problema: estar\u00edamos executando-a como parte de uma tarefa de limpeza de dados em segundo plano, de modo que nenhum dos nossos usu\u00e1rios saberia disso. Depois de executarmos essa tarefa em todos os documentos, n\u00e3o precisaremos mais de <em>FALTANDO<\/em> em nossa consulta voltada para o usu\u00e1rio, pois saber\u00edamos que todos os nossos documentos de conversa seriam\u00a0<em>exclu\u00eddo: true\u00a0<\/em>ou\u00a0<em>exclu\u00eddo: falso<\/em>.<\/p>\n<h3>Usando vers\u00f5es de esquema em vez disso<\/h3>\n<p>Poder\u00edamos evitar o uso de MISSING mantendo o controle de vers\u00e3o do esquema:<\/p>\n<pre style=\"margin-left: 40px\" class=\"\">{\r\n   \"schema\": \"1.2.3\"\r\n}<\/pre>\n<p>Se imaginarmos que nossa nova vers\u00e3o do esquema, com o\u00a0<em>exclu\u00eddo<\/em>\u00a0fosse 2.0.0, nossa tarefa de zelador em segundo plano poderia procurar todos os documentos que tivessem uma vers\u00e3o de esquema anterior a 2.0.0 e, em seguida, execut\u00e1-los por meio de um processo de atualiza\u00e7\u00e3o, parte do qual seria adicionar o sinalizador\u00a0<em>exclu\u00eddo<\/em>\u00a0bandeira.<\/p>","protected":false},"excerpt":{"rendered":"<p>When you&#8217;re building an application, a situation often comes up where your users want to delete some content but\u00a0you still need to know that the data once existed. Let&#8217;s say you&#8217;re building a messaging app. You might want to give [&hellip;]<\/p>","protected":false},"author":18,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[],"ppma_author":[8982],"class_list":["post-2022","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.7.1 (Yoast SEO v25.7) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Efficiently querying deleted documents with N1QL\u2019s MISSING<\/title>\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\/pt\/efficiently-querying-for-deleted-documents-with-n1ql\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Efficiently querying for deleted documents with N1QL&#039;s MISSING\" \/>\n<meta property=\"og:description\" content=\"When you&#8217;re building an application, a situation often comes up where your users want to delete some content but\u00a0you still need to know that the data once existed. Let&#8217;s say you&#8217;re building a messaging app. You might want to give [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/efficiently-querying-for-deleted-documents-with-n1ql\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2015-11-20T14:55:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-27T14:14:32+00:00\" \/>\n<meta name=\"author\" content=\"Matthew Revell, Lead Developer Advocate, EMEA, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Matthew Revell, Lead Developer Advocate, EMEA, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/efficiently-querying-for-deleted-documents-with-n1ql\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/efficiently-querying-for-deleted-documents-with-n1ql\/\"},\"author\":{\"name\":\"Matthew Revell, Lead Developer Advocate, EMEA, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/6c3060a94353df62a71d4672b3454555\"},\"headline\":\"Efficiently querying for deleted documents with N1QL&#8217;s MISSING\",\"datePublished\":\"2015-11-20T14:55:00+00:00\",\"dateModified\":\"2023-06-27T14:14:32+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/efficiently-querying-for-deleted-documents-with-n1ql\/\"},\"wordCount\":530,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/efficiently-querying-for-deleted-documents-with-n1ql\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"Uncategorized\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/efficiently-querying-for-deleted-documents-with-n1ql\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/efficiently-querying-for-deleted-documents-with-n1ql\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/efficiently-querying-for-deleted-documents-with-n1ql\/\",\"name\":\"Efficiently querying deleted documents with N1QL\u2019s MISSING\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/efficiently-querying-for-deleted-documents-with-n1ql\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/efficiently-querying-for-deleted-documents-with-n1ql\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2015-11-20T14:55:00+00:00\",\"dateModified\":\"2023-06-27T14:14:32+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/efficiently-querying-for-deleted-documents-with-n1ql\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/efficiently-querying-for-deleted-documents-with-n1ql\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/efficiently-querying-for-deleted-documents-with-n1ql\/#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\/efficiently-querying-for-deleted-documents-with-n1ql\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Efficiently querying for deleted documents with N1QL&#8217;s MISSING\"}]},{\"@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\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@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\/6c3060a94353df62a71d4672b3454555\",\"name\":\"Matthew Revell, Lead Developer Advocate, EMEA, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/b1bc555cd9166b46d6063003c3b92317\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/3b38ea45b78371f0008a765ea828bfed91aa97c25981ebf214226402a510b39b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/3b38ea45b78371f0008a765ea828bfed91aa97c25981ebf214226402a510b39b?s=96&d=mm&r=g\",\"caption\":\"Matthew Revell, Lead Developer Advocate, EMEA, Couchbase\"},\"description\":\"Matthew Revell is a Lead Dev Advocate, EMEA Couchbase. He developed a global strategy for putting Couchbase front in the minds of the product's developers.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/pt\/author\/matthew-revell\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Efficiently querying deleted documents with N1QL\u2019s MISSING","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\/pt\/efficiently-querying-for-deleted-documents-with-n1ql\/","og_locale":"pt_BR","og_type":"article","og_title":"Efficiently querying for deleted documents with N1QL's MISSING","og_description":"When you&#8217;re building an application, a situation often comes up where your users want to delete some content but\u00a0you still need to know that the data once existed. Let&#8217;s say you&#8217;re building a messaging app. You might want to give [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/efficiently-querying-for-deleted-documents-with-n1ql\/","og_site_name":"The Couchbase Blog","article_published_time":"2015-11-20T14:55:00+00:00","article_modified_time":"2023-06-27T14:14:32+00:00","author":"Matthew Revell, Lead Developer Advocate, EMEA, Couchbase","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Matthew Revell, Lead Developer Advocate, EMEA, Couchbase","Est. reading time":"3 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/efficiently-querying-for-deleted-documents-with-n1ql\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/efficiently-querying-for-deleted-documents-with-n1ql\/"},"author":{"name":"Matthew Revell, Lead Developer Advocate, EMEA, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/6c3060a94353df62a71d4672b3454555"},"headline":"Efficiently querying for deleted documents with N1QL&#8217;s MISSING","datePublished":"2015-11-20T14:55:00+00:00","dateModified":"2023-06-27T14:14:32+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/efficiently-querying-for-deleted-documents-with-n1ql\/"},"wordCount":530,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/efficiently-querying-for-deleted-documents-with-n1ql\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["Uncategorized"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/efficiently-querying-for-deleted-documents-with-n1ql\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/efficiently-querying-for-deleted-documents-with-n1ql\/","url":"https:\/\/www.couchbase.com\/blog\/efficiently-querying-for-deleted-documents-with-n1ql\/","name":"Efficiently querying deleted documents with N1QL\u2019s MISSING","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/efficiently-querying-for-deleted-documents-with-n1ql\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/efficiently-querying-for-deleted-documents-with-n1ql\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2015-11-20T14:55:00+00:00","dateModified":"2023-06-27T14:14:32+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/efficiently-querying-for-deleted-documents-with-n1ql\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/efficiently-querying-for-deleted-documents-with-n1ql\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/efficiently-querying-for-deleted-documents-with-n1ql\/#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\/efficiently-querying-for-deleted-documents-with-n1ql\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Efficiently querying for deleted documents with N1QL&#8217;s MISSING"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"Blog do Couchbase","description":"Couchbase, o banco de dados NoSQL","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":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"Blog do Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@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\/6c3060a94353df62a71d4672b3454555","name":"Matthew Revell, l\u00edder de suporte ao desenvolvedor, EMEA, Couchbase","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/b1bc555cd9166b46d6063003c3b92317","url":"https:\/\/secure.gravatar.com\/avatar\/3b38ea45b78371f0008a765ea828bfed91aa97c25981ebf214226402a510b39b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3b38ea45b78371f0008a765ea828bfed91aa97c25981ebf214226402a510b39b?s=96&d=mm&r=g","caption":"Matthew Revell, Lead Developer Advocate, EMEA, Couchbase"},"description":"Matthew Revell \u00e9 um dos principais defensores do desenvolvimento do Couchbase na regi\u00e3o EMEA. Ele desenvolveu uma estrat\u00e9gia global para colocar o Couchbase na mente dos desenvolvedores do produto.","url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/matthew-revell\/"}]}},"authors":[{"term_id":8982,"user_id":18,"is_guest":0,"slug":"matthew-revell","display_name":"Matthew Revell, Lead Developer Advocate, EMEA, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/3b38ea45b78371f0008a765ea828bfed91aa97c25981ebf214226402a510b39b?s=96&d=mm&r=g","first_name":"Matthew","last_name":"Revell","user_url":"","author_category":"","description":"Matthew Revell \u00e9 um dos principais defensores do desenvolvimento do Couchbase na regi\u00e3o EMEA. Ele desenvolveu uma estrat\u00e9gia global para colocar o Couchbase na mente dos desenvolvedores do produto."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/2022","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/users\/18"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=2022"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/2022\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=2022"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=2022"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=2022"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=2022"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}