{"id":2111,"date":"2017-01-03T02:42:51","date_gmt":"2017-01-03T02:42:50","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2111"},"modified":"2019-05-07T10:43:35","modified_gmt":"2019-05-07T17:43:35","slug":"couchbase-mobile-part-2-couchbase-lite-views-indexes","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/couchbase-mobile-part-2-couchbase-lite-views-indexes\/","title":{"rendered":"Couchbase Mobile Parte 2: visualiza\u00e7\u00f5es do Couchbase Lite (\u00edndices!)"},"content":{"rendered":"<p><em>Este blog foi publicado originalmente no site do blog pessoal de Roi Katz. Por favor <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/couchbase-mobile-part-2-couchbase-lite-views-indexes\/\">clique aqui<\/a> para encontrar a postagem original.<\/em><\/p>\n<p>No <a href=\"https:\/\/roikatz.blogspot.co.il\/2015\/12\/couchbase-mobile-part-1-couchbase-lite.html\">Parte 1<\/a> Criamos nosso aplicativo pequeno, por\u00e9m interessante, e at\u00e9 o replicamos em outro Couchbase Lite.<\/p>\n<p>Mas e agora? Queremos us\u00e1-lo de fato!<\/p>\n<p>Ent\u00e3o, como usamos um banco de dados? Bem, pelo menos para \"obter\" os dados, voc\u00ea tem algumas op\u00e7\u00f5es:<\/p>\n<ol>\n<li>Obter por chave prim\u00e1ria<\/li>\n<li>Obter por um \u00edndice (ou \"selecion\u00e1-lo\" onde x)<\/li>\n<\/ol>\n<p>At\u00e9 agora, em nosso aplicativo de exemplo simples, s\u00f3 pod\u00edamos usar a \"chave prim\u00e1ria\" para acessar nossos dados e recuper\u00e1-los.<\/p>\n<p>Mas essa n\u00e3o \u00e9 a \u00fanica maneira de obter dados do Couchbase Lite.<\/p>\n<p>Nesta parte, aprenderemos os conceitos b\u00e1sicos da indexa\u00e7\u00e3o do Couchbase Lite. Tamb\u00e9m conhecido como Views.<\/p>\n<p>Nas exibi\u00e7\u00f5es, executamos nossas consultas.<\/p>\n<p>Portanto, precisamos:<\/p>\n<ol>\n<li>Criar visualiza\u00e7\u00e3o<\/li>\n<li>Executar consultas na exibi\u00e7\u00e3o<\/li>\n<li>Obter os resultados<\/li>\n<\/ol>\n<p>Criaremos nosso caso de uso - de como usar \"exibi\u00e7\u00f5es\" no Couchbase Lite.<\/p>\n<ol>\n<li>Inicie um novo projeto WPF.<\/li>\n<\/ol>\n<div class=\"separator\" style=\"color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18.2px; clear: both; text-align: center;\"><a style=\"text-decoration: none; color: #015782; margin-left: 1em; margin-right: 1em;\" href=\"https:\/\/3.bp.blogspot.com\/-VBIWYykibXU\/VoKC4cVZv_I\/AAAAAAAAStA\/WseHli7iNE8\/s1600\/Screen%2BShot%2B2015-12-29%2Bat%2B14.55.37.png\"><img loading=\"lazy\" decoding=\"async\" style=\"border: 1px solid #cccccc; position: relative; padding: 8px; box-shadow: rgba(0, 0, 0, 0.2) 0px 0px 20px; border-radius: 0px; background-image: initial; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;\" src=\"https:\/\/3.bp.blogspot.com\/-VBIWYykibXU\/VoKC4cVZv_I\/AAAAAAAAStA\/WseHli7iNE8\/s320\/Screen%2BShot%2B2015-12-29%2Bat%2B14.55.37.png\" width=\"320\" height=\"221\" border=\"0\" \/><\/a><\/div>\n<ol start=\"2\">\n<li>Adicionar o pacote Nuget Couchbase.Lite<\/li>\n<\/ol>\n<div class=\"separator\" style=\"color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18.2px; clear: both; text-align: center;\"><a style=\"text-decoration: none; color: #015782; margin-left: 1em; margin-right: 1em;\" href=\"https:\/\/4.bp.blogspot.com\/-Zg2g-SyYOo0\/VoKDUMLpr6I\/AAAAAAAAStI\/UGVisAnQZ6A\/s1600\/Screen%2BShot%2B2015-12-29%2Bat%2B13.17.15.png\"><img loading=\"lazy\" decoding=\"async\" style=\"border: 1px solid #cccccc; position: relative; padding: 8px; box-shadow: rgba(0, 0, 0, 0.2) 0px 0px 20px; border-radius: 0px; background-image: initial; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;\" src=\"https:\/\/4.bp.blogspot.com\/-Zg2g-SyYOo0\/VoKDUMLpr6I\/AAAAAAAAStI\/UGVisAnQZ6A\/s320\/Screen%2BShot%2B2015-12-29%2Bat%2B13.17.15.png\" width=\"320\" height=\"158\" border=\"0\" \/><\/a><\/div>\n<ol start=\"3\">\n<li>Copie esse XAML<\/li>\n<\/ol>\n<pre><code style=\"word-wrap: normal;\">   \r\n     \r\n       \r\n         \r\n         \r\n       \r\n       \r\n         \r\n         \r\n       \r\n       \r\n       <button><\/button>  \r\n       <button><\/button>  \r\n       <button><\/button>  \r\n       \r\n       \r\n         \r\n          \r\n       \r\n       \r\n       <button><\/button>  \r\n         \r\n       \r\n     \r\n   \r\n<\/code><\/pre>\n<p>O que se traduz em<\/p>\n<table class=\"tr-caption-container\" style=\"padding: 4px; margin-bottom: 0.5em; position: relative; color: #333333; line-height: 18.2px; margin-left: auto; margin-right: auto; background-color: #ffffff;\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\">\n<tbody>\n<tr>\n<td><a style=\"text-decoration: none; color: #015782; margin-left: auto; margin-right: auto;\" href=\"https:\/\/2.bp.blogspot.com\/-q6F2g3thBRY\/VokYk3RJKwI\/AAAAAAAAUCA\/FCaUPDUIXo8\/s1600\/Screen%2BShot%2B2016-01-03%2Bat%2B14.47.11.png\"><img loading=\"lazy\" decoding=\"async\" style=\"border: 1px solid #cccccc; position: relative; padding: 8px; box-shadow: rgba(0, 0, 0, 0.2) 0px 0px 20px; border-radius: 0px; background-image: initial; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;\" title=\"A GUI \u00e9 gerada a partir do XAML acima\" src=\"https:\/\/2.bp.blogspot.com\/-q6F2g3thBRY\/VokYk3RJKwI\/AAAAAAAAUCA\/FCaUPDUIXo8\/s400\/Screen%2BShot%2B2016-01-03%2Bat%2B14.47.11.png\" alt=\"\" width=\"400\" height=\"223\" border=\"0\" \/><\/a><\/td>\n<\/tr>\n<tr>\n<td class=\"tr-caption\" style=\"font-size: 10.4px;\">A GUI \u00e9 gerada a partir do XAML acima<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<ol start=\"4\">\n<li>Depois de obter a interface de usu\u00e1rio b\u00e1sica, que voc\u00ea poder\u00e1 explorar mais tarde (nada de mais aqui, na verdade), vamos ao c\u00f3digo propriamente dito.<\/li>\n<\/ol>\n<p>Depois de iniciarmos tudo e inicializarmos o banco de dados, vamos definir nossas exibi\u00e7\u00f5es.<\/p>\n<p>Nesse caso, defini uma visualiza\u00e7\u00e3o, apenas para mostrar como configurar as coisas.<\/p>\n<pre><code style=\"word-wrap: normal;\">     private void GenerateViews()  \r\n     {  \r\n       var docsByCity = _database.GetView(\"docs_by_city\");  \r\n       docsByCity.SetMap((doc, emit) =&gt;  \r\n       {  \r\n         if (doc.ContainsKey(\"City\"))  \r\n         {  \r\n           emit(doc[\"City\"], doc);  \r\n         }  \r\n       }, \"1\");  \r\n     }  \r\n<\/code><\/pre>\n<p>O que voc\u00ea pode ver aqui \u00e9 que, depois de recuperar um nome do _database, posso definir um mapa sobre ele.<\/p>\n<p>No exemplo acima, criei uma exibi\u00e7\u00e3o chamada \"docs_by_city\", atribu\u00ed um delegado, verifiquei se alguma chave (\"City\") existia e, em seguida, a emiti para o \u00edndice. Simples assim.<\/p>\n<p>Acabamos de criar nosso \u00edndice que, para cada documento, cont\u00e9m uma propriedade chamada City (Cidade) - ele emite o documento inteiro, mas voc\u00ea pode optar por emitir o que quiser, dependendo dos requisitos do aplicativo.<\/p>\n<p>Ele pode ser ajustado para melhor desempenho e menor tamanho de \u00edndice.<\/p>\n<p>Al\u00e9m disso, voc\u00ea pode colocar como chave qualquer string que desejar ou compor seu \u00edndice a partir de v\u00e1rias propriedades para atender a necessidades especiais.<\/p>\n<p style=\"margin-left: 40px;\"><strong>Nunca \u00e9 bom armazenar o documento inteiro no \u00edndice, pois isso basicamente cria uma c\u00f3pia do documento dentro do \u00edndice. Tente manter seu \u00edndice o menor poss\u00edvel. No entanto, se voc\u00ea precisar de algum tipo de \u00edndice que tenha o documento inteiro como resultado, por uma quest\u00e3o de desempenho, \u00e9 melhor manter o documento no \u00edndice em vez de acessar a propriedade result.Document - para evitar algumas viagens de ida e volta ao banco de dados. <\/strong><\/p>\n<p>O n\u00famero \"1\" aqui \u00e9 a vers\u00e3o do \u00edndice. Durante o desenvolvimento, se voc\u00ea alterar a fun\u00e7\u00e3o de mapa, tamb\u00e9m precisar\u00e1 incrementar esse n\u00famero (caso n\u00e3o tenha exclu\u00eddo todo o banco de dados) para reconstruir o \u00edndice.<\/p>\n<p>H\u00e1 duas consultas especiais.<\/p>\n<ol>\n<li>Obter a contagem de todos os documentos. (com _database.DocumentCount)<\/li>\n<li>Obter todos os documentos. (com _database.CreateAllDocumentsQuery())<\/li>\n<\/ol>\n<p>Depois de definirmos nossa visualiza\u00e7\u00e3o (*index), podemos come\u00e7ar a escrever o c\u00f3digo e us\u00e1-lo.<\/p>\n<ol>\n<li>O uso \u00e9 bastante simples, com apenas 5 etapas.<\/li>\n<li>Obter a visualiza\u00e7\u00e3o<\/li>\n<li>Criar uma consulta na exibi\u00e7\u00e3o<\/li>\n<li>Defina seus crit\u00e9rios no \u00edndice<\/li>\n<li>Execute-o<\/li>\n<li>Leia<\/li>\n<\/ol>\n<p>No c\u00f3digo, isso parece ainda mais simples:<\/p>\n<pre><code style=\"word-wrap: normal;\">      private void GetByCityClick(object sender, RoutedEventArgs e)  \r\n     {  \r\n       var docsByCity = _database.GetView(\"docs_by_city\");  \r\n       var query = docsByCity.CreateQuery();  \r\n\r\n       query.StartKey = City;  \r\n       query.EndKey = City;  \r\n\r\n       var queryResults = query.Run();  \r\n       MessageBox.Show(string.Format(\"{0} documents has been retrieved for that query\", queryResults.Count));\r\n\r\n       if (queryResults.Count == 0) return;  \r\n\r\n       var documents = queryResults.Select(result =&gt; JsonConvert.SerializeObject(result.Value, Formatting.Indented)).ToArray();  \r\n       var commaSeperaterdDocs = \"[\" + string.Join(\",\", documents) + \"]\";  \r\n\r\n       DocumentText = commaSeperaterdDocs;  \r\n     }  \r\n<\/code><\/pre>\n<div>Quero a \"Cidade\" exata, por isso escrevi na chave inicial e final o mesmo valor.<\/div>\n<p>Executo a consulta e verifico se h\u00e1 algum resultado.<\/p>\n<p>Em seguida, eu \"embelezo\" o resultado (para cada valor) e o retorno como uma matriz JSON.<\/p>\n<p><strong>Preste aten\u00e7\u00e3o que n\u00e3o estou usando result.Document, mas result.Value, pois o uso de result.Document n\u00e3o usar\u00e1 o \u00edndice e consultar\u00e1 o banco de dados para cada resultado. <\/strong><\/p>\n<p><strong>Portanto, para melhorar o desempenho, use result.key, result.value ou result.DocumentId. <\/strong><\/p>\n<p>Agora \u00e9 s\u00f3 adicionar essa parte para gerar alguns dados...<\/p>\n<pre><code style=\"word-wrap: normal;\">   private void InsertSomeDataClick(object sender, RoutedEventArgs e)  \r\n     {  \r\n       var result = MessageBox.Show(\"Press Yes to insert some data (10 docs)!\", \"Confirm\", MessageBoxButton.YesNo);  \r\n       if (result == MessageBoxResult.Yes)  \r\n       {  \r\n         var count = _database.DocumentCount;  \r\n         string[] cities = { \"London\", \"New York\", \"Tel Aviv\" };  \r\n         var rnd = new Random();  \r\n         for (int i = 0; i &lt; 10; i++)  \r\n         {  \r\n           var id = \"document\" + (i + count);  \r\n           var cityIndex = rnd.Next(0, 3);  \r\n   \r\n           var properties = new Dictionary&lt;string, string&gt;();  \r\n           properties.Add(\"name\", \"Roi Katz\");  \r\n           properties.Add(\"City\", cities[cityIndex]);  \r\n             \r\n           var doc = JsonConvert.SerializeObject(properties);  \r\n           InsertDocument(id, doc);  \r\n         }   \r\n         MessageBox.Show(\"10 Records inserted\");  \r\n       }  \r\n     }  <\/code><\/pre>\n<p>E estamos prontos para ir!<\/p>\n<p>\u00c9 assim que fazemos uma visualiza\u00e7\u00e3o simples!<\/p>\n<p>\u00c9 claro que teremos mais informa\u00e7\u00f5es sobre as visualiza\u00e7\u00f5es do Couchbase lite, mas isso \u00e9 apenas o come\u00e7o.<\/p>\n<p>\u00c9 claro que precisamos criar as propriedades adequadas, portanto, para obter o projeto completo, consulte meu <a href=\"https:\/\/github.com\/roikatz\/CouchbaseLite_Views\/tree\/master\/CouchbaseLiteViews_Blog\">GitHub<\/a> p\u00e1gina.<\/p>","protected":false},"excerpt":{"rendered":"<p>This blog was originally posted on Roi Katz&#8217;s personal blog site. Please click here to find the original post. In the part 1 we&#8217;ve built our tiny yet cool application, we&#8217;ve even replicated it to another Couchbase Lite. But what [&hellip;]<\/p>","protected":false},"author":64,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1810],"tags":[],"ppma_author":[8938],"class_list":["post-2111","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-mobile"],"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 Mobile Part 2: Couchbase Lite Views (Indexes!)<\/title>\n<meta name=\"description\" content=\"The blog covers learning the basics of Couchbase Lite indexing. AKA Views. It also explains how to do simple views, how to run queries.\" \/>\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\/couchbase-mobile-part-2-couchbase-lite-views-indexes\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Couchbase Mobile Part 2: Couchbase Lite Views (Indexes!)\" \/>\n<meta property=\"og:description\" content=\"The blog covers learning the basics of Couchbase Lite indexing. AKA Views. It also explains how to do simple views, how to run queries.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/couchbase-mobile-part-2-couchbase-lite-views-indexes\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-01-03T02:42:50+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-05-07T17:43:35+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/11\/couchbase-nosql-dbaas.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1800\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Roi Katz, Solution Architect, 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=\"Roi Katz, Solution Architect, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-mobile-part-2-couchbase-lite-views-indexes\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-mobile-part-2-couchbase-lite-views-indexes\/\"},\"author\":{\"name\":\"Roi Katz, Solution Architect, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/8e452408f0a3793ded90eea9263a264e\"},\"headline\":\"Couchbase Mobile Part 2: Couchbase Lite Views (Indexes!)\",\"datePublished\":\"2017-01-03T02:42:50+00:00\",\"dateModified\":\"2019-05-07T17:43:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-mobile-part-2-couchbase-lite-views-indexes\/\"},\"wordCount\":706,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-mobile-part-2-couchbase-lite-views-indexes\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"Couchbase Mobile\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-mobile-part-2-couchbase-lite-views-indexes\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-mobile-part-2-couchbase-lite-views-indexes\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/couchbase-mobile-part-2-couchbase-lite-views-indexes\/\",\"name\":\"Couchbase Mobile Part 2: Couchbase Lite Views (Indexes!)\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-mobile-part-2-couchbase-lite-views-indexes\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-mobile-part-2-couchbase-lite-views-indexes\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2017-01-03T02:42:50+00:00\",\"dateModified\":\"2019-05-07T17:43:35+00:00\",\"description\":\"The blog covers learning the basics of Couchbase Lite indexing. AKA Views. It also explains how to do simple views, how to run queries.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-mobile-part-2-couchbase-lite-views-indexes\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-mobile-part-2-couchbase-lite-views-indexes\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-mobile-part-2-couchbase-lite-views-indexes\/#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-mobile-part-2-couchbase-lite-views-indexes\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Couchbase Mobile Part 2: Couchbase Lite Views (Indexes!)\"}]},{\"@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\/8e452408f0a3793ded90eea9263a264e\",\"name\":\"Roi Katz, Solution Architect, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/5eb805f4c05de24c77c276f241a51b53\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a22c6493bc51fd783319cc905789337f163df1de53c7bad6d769c9560be0ba3c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a22c6493bc51fd783319cc905789337f163df1de53c7bad6d769c9560be0ba3c?s=96&d=mm&r=g\",\"caption\":\"Roi Katz, Solution Architect, Couchbase\"},\"description\":\"Roi is a Couchbase Solution Architect, software developer and architect with over 10 years of broad industry experience. He has been a trainer and author of courses with a specialization in Big Data Systems, NoSQL Databases, Couchbase, Distributed Architecture and Cloud Computing.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/pt\/author\/roi-katz\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Couchbase Mobile Parte 2: visualiza\u00e7\u00f5es do Couchbase Lite (\u00edndices!)","description":"O blog aborda o aprendizado dos conceitos b\u00e1sicos da indexa\u00e7\u00e3o do Couchbase Lite. Tamb\u00e9m conhecido como Views. Ele tamb\u00e9m explica como fazer visualiza\u00e7\u00f5es simples e como executar consultas.","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\/couchbase-mobile-part-2-couchbase-lite-views-indexes\/","og_locale":"pt_BR","og_type":"article","og_title":"Couchbase Mobile Part 2: Couchbase Lite Views (Indexes!)","og_description":"The blog covers learning the basics of Couchbase Lite indexing. AKA Views. It also explains how to do simple views, how to run queries.","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/couchbase-mobile-part-2-couchbase-lite-views-indexes\/","og_site_name":"The Couchbase Blog","article_published_time":"2017-01-03T02:42:50+00:00","article_modified_time":"2019-05-07T17:43:35+00:00","og_image":[{"width":1800,"height":630,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/11\/couchbase-nosql-dbaas.png","type":"image\/png"}],"author":"Roi Katz, Solution Architect, Couchbase","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Roi Katz, Solution Architect, Couchbase","Est. reading time":"4 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-mobile-part-2-couchbase-lite-views-indexes\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-mobile-part-2-couchbase-lite-views-indexes\/"},"author":{"name":"Roi Katz, Solution Architect, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/8e452408f0a3793ded90eea9263a264e"},"headline":"Couchbase Mobile Part 2: Couchbase Lite Views (Indexes!)","datePublished":"2017-01-03T02:42:50+00:00","dateModified":"2019-05-07T17:43:35+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-mobile-part-2-couchbase-lite-views-indexes\/"},"wordCount":706,"commentCount":1,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-mobile-part-2-couchbase-lite-views-indexes\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["Couchbase Mobile"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/couchbase-mobile-part-2-couchbase-lite-views-indexes\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-mobile-part-2-couchbase-lite-views-indexes\/","url":"https:\/\/www.couchbase.com\/blog\/couchbase-mobile-part-2-couchbase-lite-views-indexes\/","name":"Couchbase Mobile Parte 2: visualiza\u00e7\u00f5es do Couchbase Lite (\u00edndices!)","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-mobile-part-2-couchbase-lite-views-indexes\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-mobile-part-2-couchbase-lite-views-indexes\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2017-01-03T02:42:50+00:00","dateModified":"2019-05-07T17:43:35+00:00","description":"O blog aborda o aprendizado dos conceitos b\u00e1sicos da indexa\u00e7\u00e3o do Couchbase Lite. Tamb\u00e9m conhecido como Views. Ele tamb\u00e9m explica como fazer visualiza\u00e7\u00f5es simples e como executar consultas.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-mobile-part-2-couchbase-lite-views-indexes\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/couchbase-mobile-part-2-couchbase-lite-views-indexes\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-mobile-part-2-couchbase-lite-views-indexes\/#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-mobile-part-2-couchbase-lite-views-indexes\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Couchbase Mobile Part 2: Couchbase Lite Views (Indexes!)"}]},{"@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\/8e452408f0a3793ded90eea9263a264e","name":"Roi Katz, arquiteto de solu\u00e7\u00f5es, Couchbase","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/5eb805f4c05de24c77c276f241a51b53","url":"https:\/\/secure.gravatar.com\/avatar\/a22c6493bc51fd783319cc905789337f163df1de53c7bad6d769c9560be0ba3c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a22c6493bc51fd783319cc905789337f163df1de53c7bad6d769c9560be0ba3c?s=96&d=mm&r=g","caption":"Roi Katz, Solution Architect, Couchbase"},"description":"Roi \u00e9 arquiteto de solu\u00e7\u00f5es do Couchbase, desenvolvedor de software e arquiteto com mais de 10 anos de ampla experi\u00eancia no setor. Ele foi instrutor e autor de cursos com especializa\u00e7\u00e3o em sistemas de Big Data, bancos de dados NoSQL, Couchbase, arquitetura distribu\u00edda e computa\u00e7\u00e3o em nuvem.","url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/roi-katz\/"}]}},"authors":[{"term_id":8938,"user_id":64,"is_guest":0,"slug":"roi-katz","display_name":"Roi Katz, Solution Architect, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/a22c6493bc51fd783319cc905789337f163df1de53c7bad6d769c9560be0ba3c?s=96&d=mm&r=g","author_category":"","last_name":"Katz","first_name":"Roi","job_title":"","user_url":"","description":"Roi \u00e9 arquiteto de solu\u00e7\u00f5es do Couchbase, desenvolvedor de software e arquiteto com mais de 10 anos de ampla experi\u00eancia no setor. Ele foi instrutor e autor de cursos com especializa\u00e7\u00e3o em sistemas de Big Data, bancos de dados NoSQL, Couchbase, arquitetura distribu\u00edda e computa\u00e7\u00e3o em nuvem."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/2111","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\/64"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=2111"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/2111\/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=2111"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=2111"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=2111"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=2111"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}