{"id":2200,"date":"2016-10-11T00:00:03","date_gmt":"2016-10-11T00:00:03","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2200"},"modified":"2025-10-09T07:19:39","modified_gmt":"2025-10-09T14:19:39","slug":"making-the-most-of-your-arrays-with-array-indexing","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/making-the-most-of-your-arrays-with-array-indexing\/","title":{"rendered":"Aproveitando ao m\u00e1ximo suas matrizes... com a indexa\u00e7\u00e3o de matrizes N1QL"},"content":{"rendered":"<p dir=\"ltr\" style=\"background-color: #00ffff;margin-left: 40px;margin-right: 40px;text-align: center\">\u00a0<strong>O Couchbase 4.5 foi lan\u00e7ado!!<\/strong> <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/1.making-most-of-your-arrays..-with-covering-array-indexes-and-more\/\">Parte 2<\/a> \u00e9 uma continua\u00e7\u00e3o deste blog e inclui a cobertura de \u00edndices de matriz, suporte para mais operadores, como UNNEST, ALL, ANY AND EVERY etc,<\/p>\n<p dir=\"ltr\">Voc\u00ea tem documentos com matrizes incorporadas e precisa de um meio eficiente de acessar os dados armazenados nessas matrizes? As matrizes s\u00e3o um dos recursos avan\u00e7ados da modelagem de dados NoSQL\/JSON. As matrizes podem armazenar dados com v\u00e1rios valores dentro de um atributo de documento, como v\u00e1rios n\u00fameros de telefone, informa\u00e7\u00f5es sobre crian\u00e7as, hor\u00e1rios de voos, an\u00e1lises de produtos, coment\u00e1rios e respostas de blogs etc.  Isso n\u00e3o apenas mant\u00e9m todos os dados relevantes juntos no mesmo documento, mas tamb\u00e9m melhora o desempenho da consulta, evitando JOINs desnecess\u00e1rios. As matrizes em documentos n\u00e3o s\u00e3o novidade para o Couchbase ou o N1QL (SQL para JSON), que j\u00e1 tem uma ampla sele\u00e7\u00e3o de constru\u00e7\u00f5es e operadores para armazenar, indexar e processar matrizes.<\/p>\n<p dir=\"ltr\"><span style=\"background-color: transparent;vertical-align: baseline\">O Couchbase 4.5 Developer Preview adiciona suporte para <\/span><strong>Indexa\u00e7\u00e3o de matrizes<\/strong><span style=\"background-color: transparent;vertical-align: baseline\"> com a capacidade de indexar e consultar elementos individuais da matriz ou quaisquer objetos\/atributos aninhados na matriz. A indexa\u00e7\u00e3o de matriz melhora muito o desempenho das consultas que envolvem matrizes, especialmente o acesso a valores e atributos dentro da matriz. Ela tamb\u00e9m simplifica o processamento de atributos de matriz no <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/products\/n1ql\/\">Consultas N1QL<\/a>. Isso representa um grande salto em rela\u00e7\u00e3o \u00e0s vers\u00f5es anteriores, em que os \u00edndices secund\u00e1rios podiam ser criados e, posteriormente, consultados, mas somente no conte\u00fado de toda a matriz. \u00a0<\/span><\/p>\n<p dir=\"ltr\"><span style=\"background-color: transparent;vertical-align: baseline\">Vamos ver como a m\u00e1gica funciona. Considere o <em>'amostra de viagem'<\/em> balde enviado com o produto, e o <\/span><span style=\"color: #000000;font-family: 'Courier New';line-height: 20.799999237060547px;text-align: left\">cronograma<\/span><span style=\"background-color: transparent;vertical-align: baseline\"> nos documentos com <\/span><span style=\"font-family: 'Courier New';color: #000000;background-color: transparent;vertical-align: baseline\">tipo = <\/span><span style=\"font-family: 'Courier New';color: #000000;background-color: transparent;vertical-align: baseline\">&#8220;<\/span><span style=\"font-family: 'Courier New';color: #000000;background-color: transparent;vertical-align: baseline\">rota<\/span><span style=\"font-family: 'Courier New';color: #000000;background-color: transparent;vertical-align: baseline\">&#8220;<\/span><\/p>\n<p><img decoding=\"async\" style=\"background-color: #eaeaea\" src=\"\/wp-content\/original-assets\/2016\/march\/making-the-most-of-your-arrays...-with-array-indexing\/arrayindex_ex.png\" width=\"650\" align=\"middle\" \/><\/p>\n<p dir=\"ltr\" style=\"margin-top: 0pt;margin-bottom: 0pt;margin-right: -36pt\"><span style=\"background-color: transparent;vertical-align: baseline\">Em vers\u00f5es anteriores, quando um \u00edndice \u00e9 criado em <\/span><span style=\"font-family: 'Courier New';color: #000000;background-color: transparent;vertical-align: baseline\">cronograma<\/span><span style=\"background-color: transparent;vertical-align: baseline\"> a matriz inteira \u00e9 indexada com todo o seu conte\u00fado\/elementos como um \u00fanico valor escalar. Isso significa que tudo o que voc\u00ea v\u00ea na caixa azul no exemplo acima \u00e9 considerado como um \u00fanico valor de \u00edndice. Portanto, mais tarde, quando voc\u00ea consultar o <\/span><span style=\"color: #000000;font-family: 'Courier New';line-height: 20.799999237060547px;text-align: left\">cronograma<\/span><span style=\"background-color: transparent;vertical-align: baseline\">o valor total do array precisa ser fornecido no <em>Cl\u00e1usula WHERE<\/em> para usar o \u00edndice. Isso pode ser gerenci\u00e1vel para matrizes simples\/pequenas, mas, em geral, apresenta os seguintes problemas:<\/span><\/p>\n<ol style=\"margin-top: 0pt;margin-bottom: 0pt\">\n<li dir=\"ltr\" style=\"background-color: transparent;vertical-align: baseline\">\n<p dir=\"ltr\" style=\"margin-top: 0pt;margin-bottom: 0pt;margin-right: -36pt\"><span style=\"background-color: transparent;font-weight: bold;vertical-align: baseline\">Indexa\u00e7\u00e3o de dados de granula\u00e7\u00e3o fina dentro da matriz: <\/span><span style=\"background-color: transparent;vertical-align: baseline\">E se voc\u00ea quiser indexar apenas um subconjunto da matriz, digamos <\/span><span style=\"font-family: 'Courier New';background-color: transparent;vertical-align: baseline\">voo <\/span><span style=\"background-color: transparent;vertical-align: baseline\">dentro do atributo <\/span><span style=\"font-family: 'Courier New';background-color: transparent;vertical-align: baseline\">cronograma<\/span><span style=\"background-color: transparent;vertical-align: baseline\"> ou apenas para determinados dias?<\/span><\/p>\n<\/li>\n<li dir=\"ltr\" style=\"background-color: transparent;vertical-align: baseline\">\n<p dir=\"ltr\" style=\"margin-top: 0pt;margin-bottom: 0pt;margin-right: -36pt\"><span style=\"background-color: transparent;font-weight: bold;vertical-align: baseline\">Tamanho e desempenho do \u00edndice: <\/span><span style=\"background-color: transparent;vertical-align: baseline\">Quando toda a matriz \u00e9 indexada, ela consome mais espa\u00e7o de armazenamento do \u00edndice e leva mais tempo para pesquisar o \u00edndice. A Figura 1 mostra o \u00edndice criado para o atributo <\/span><span style=\"font-family: 'Courier New';background-color: transparent;vertical-align: baseline\">cronograma <\/span><span style=\"color: #333333;line-height: 20.799999237060547px;text-align: left\">com a vers\u00e3o anterior \u00e0 4.5.<\/span><\/p>\n<\/li>\n<\/ol>\n<p style=\"margin-left: 40px;text-align: center\"><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/march\/making-the-most-of-your-arrays...-with-array-indexing\/arrayindex_size.png\" width=\"1000\" align=\"middle\" \/><\/p>\n<ol style=\"margin-top: 0pt;margin-bottom: 0pt\" start=\"3\">\n<li dir=\"ltr\" style=\"background-color: transparent;vertical-align: baseline\">\n<p dir=\"ltr\" style=\"margin-top: 0pt;margin-bottom: 0pt;margin-right: -36pt\"><span style=\"background-color: transparent;font-weight: bold;vertical-align: baseline\">Pesquisa em matrizes:<\/span><span style=\"background-color: transparent;vertical-align: baseline\"> Ao indexar toda a matriz, n\u00e3o podemos pesquisar com efici\u00eancia dados espec\u00edficos dentro da matriz. O aplicativo teria que primeiro buscar\/SELECIONAR o valor total da matriz e depois process\u00e1-lo para encontrar os dados de interesse.<\/span><\/p>\n<\/li>\n<li dir=\"ltr\" style=\"background-color: transparent;font-weight: bold;vertical-align: baseline\">\n<p dir=\"ltr\" style=\"margin-top: 0pt;margin-bottom: 0pt;margin-right: -36pt\"><span style=\"background-color: transparent;vertical-align: baseline\">Matrizes de tamanho grande: <\/span><span style=\"background-color: transparent;font-weight: 400;vertical-align: baseline\">N\u00e3o \u00e9 conveniente (e \u00e0s vezes imposs\u00edvel) fornecer o valor total do array em uma cl\u00e1usula WHERE quando o array tem muitos elementos.<\/span><\/p>\n<\/li>\n<\/ol>\n<p><span style=\"background-color: transparent;vertical-align: baseline\">A indexa\u00e7\u00e3o de arrays no Couchbase 4.5 aborda todos esses problemas e tem aprimoramentos no N1QL e no indexador para aproveitar os arrays indexados. Isso inclui suporte para \u00edndices parciais, arrays aninhados, \u00edndices compostos e operadores como \u00a0<\/span><span style=\"font-family: 'Courier New';color: #000000;background-color: transparent;vertical-align: baseline\">ANY, IN, WITHIN, DISTINCT ARRAY<\/span><span style=\"background-color: transparent;vertical-align: baseline\">. Vamos dar uma olhada em alguns exemplos:<\/span><\/p>\n<ol style=\"margin-top: 0pt;margin-bottom: 0pt\">\n<li dir=\"ltr\" style=\"background-color: transparent;vertical-align: baseline\">\n<p dir=\"ltr\" style=\"margin-top: 0pt;margin-bottom: 0pt;margin-right: -36pt\"><span style=\"background-color: transparent;vertical-align: baseline\">Primeiro, crie um \u00edndice de matriz no <\/span><span style=\"font-family: 'Courier New';background-color: transparent;vertical-align: baseline\">cronograma<\/span><span style=\"background-color: transparent;vertical-align: baseline\"> usando o atributo <\/span><span style=\"font-family: 'Courier New';background-color: transparent;vertical-align: baseline\">ARRAY DISTINTO<\/span><span style=\"background-color: transparent;vertical-align: baseline\"> que especifica os elementos exatos do array ou os atributos aninhados a serem usados como chaves de \u00edndice. A instru\u00e7\u00e3o a seguir indexa <em>\"todos os voos programados em dias \u00fateis (ou seja <\/em><\/span><em><span style=\"font-family: 'Courier New';background-color: transparent;vertical-align: baseline\">dia &lt;= 5<\/span><\/em><span style=\"background-color: transparent;vertical-align: baseline\"><em>)&#8221;<\/em>. Observe que conseguimos criar um \u00edndice em apenas um subconjunto dos elementos da matriz que s\u00e3o de interesse. Portanto, o novo \u00edndice de matriz \u00e9 compacto e eficiente (veja a Figura 2) e armazena apenas as informa\u00e7\u00f5es necess\u00e1rias no \u00edndice.<\/span><\/p>\n<\/li>\n<\/ol>\n<pre style=\"background-color: #eaeaea\"><code class=\"language-sql\">          CREATE INDEX isched \r\n          ON `travel-sample`(DISTINCT ARRAY v.flight FOR v IN schedule\r\n                             WHEN v.day &lt;= 5 END)\r\n          WHERE type = \"route\";<\/code><\/pre>\n<ol style=\"margin-top: 0pt;margin-bottom: 0pt\" start=\"2\">\n<li dir=\"ltr\" style=\"background-color: transparent;vertical-align: baseline\">\n<p dir=\"ltr\" style=\"margin-top: 0pt;margin-bottom: 0pt;margin-right: -36pt\"><span style=\"background-color: transparent;vertical-align: baseline\">Agora, o \u00edndice pode ser usado em uma instru\u00e7\u00e3o SELECT ou em qualquer outra instru\u00e7\u00e3o DML, especificando as chaves e os predicados do \u00edndice na cl\u00e1usula WHERE. Na vers\u00e3o atual, <strong>\u00e9 necess\u00e1rio especificar os nomes exatos das vari\u00e1veis<\/strong>, <strong>chaves de \u00edndice <\/strong>(como <\/span><span style=\"font-family: 'Courier New';background-color: transparent;vertical-align: baseline\">v, v.day, v.flight<\/span><span style=\"background-color: transparent;vertical-align: baseline\">), <strong>e predicados<\/strong> tais como (<\/span><span style=\"font-family: 'Courier New';background-color: transparent;vertical-align: baseline\">type = \"route\") <\/span><span style=\"background-color: transparent;vertical-align: baseline\">e<\/span><span style=\"font-family: 'Courier New';background-color: transparent;vertical-align: baseline\"> (v.day = 4) <\/span><span style=\"background-color: transparent;vertical-align: baseline\"><strong>que correspondem aos especificados na defini\u00e7\u00e3o de CREATE INDEX<\/strong>. Esse crit\u00e9rio de sele\u00e7\u00e3o de \u00edndice \u00e9 necess\u00e1rio para que o N1QL escolha automaticamente o \u00edndice correspondente para processar uma consulta. Como de costume, <\/span><span style=\"color: #333333;line-height: 20.799999237060547px;text-align: left\">quando<\/span><span style=\"color: #333333;line-height: 20.799999237060547px;text-align: left\"> s\u00e3o criados v\u00e1rios \u00edndices correspondentes, <\/span><span style=\"background-color: transparent;vertical-align: baseline\">A cl\u00e1usula USE INDEX pode ser usada para sugerir que o N1QL use um \u00edndice espec\u00edfico.<\/span><\/p>\n<\/li>\n<\/ol>\n<p dir=\"ltr\" style=\"background-color: transparent;vertical-align: baseline;margin: 0pt -36pt 0pt 40px\"><span style=\"background-color: transparent;vertical-align: baseline\"><span style=\"background-color: transparent;vertical-align: baseline\">Por exemplo, a consulta a seguir encontra o <\/span><em> \"n\u00famero de voos da UA programados em 4<sup>th<\/sup> dia\"<\/em> <span style=\"background-color: transparent;vertical-align: baseline\"> usando o \u00edndice da matriz. A consulta usa o <\/span><span style=\"font-family: 'Courier New';color: #000000;background-color: transparent;vertical-align: baseline\">iscada<\/span><span style=\"background-color: transparent;vertical-align: baseline\"> porque ele segue os requisitos de sele\u00e7\u00e3o de \u00edndices:<\/span><\/span><\/p>\n<ol style=\"margin-top: 0pt;margin-bottom: 0pt;margin-left: 40px;color: #333333;line-height: 20.799999237060547px;text-align: left\">\n<li dir=\"ltr\" style=\"list-style-type: lower-alpha;background-color: transparent;vertical-align: baseline\">\n<p dir=\"ltr\" style=\"margin-top: 0pt;margin-right: -36pt;margin-bottom: 0pt\"><span style=\"background-color: transparent;vertical-align: baseline\">A vari\u00e1vel <\/span><span style=\"font-family: 'Courier New';background-color: transparent;vertical-align: baseline\">v<\/span><span style=\"background-color: transparent;vertical-align: baseline\"> \u00e9 usada, que \u00e9 a vari\u00e1vel exata usada na defini\u00e7\u00e3o do \u00edndice.<\/span><\/p>\n<\/li>\n<li dir=\"ltr\" style=\"list-style-type: lower-alpha;background-color: transparent;vertical-align: baseline\">\n<p dir=\"ltr\" style=\"margin-top: 0pt;margin-right: -36pt;margin-bottom: 0pt\"><span style=\"background-color: transparent;vertical-align: baseline\">A chave de \u00edndice <\/span><span style=\"font-family: 'Courier New';background-color: transparent;vertical-align: baseline\">v.voo<\/span><span style=\"background-color: transparent;vertical-align: baseline\"> \u00e9 usado na cl\u00e1usula WHERE.<\/span><\/p>\n<\/li>\n<li dir=\"ltr\" style=\"list-style-type: lower-alpha;background-color: transparent;vertical-align: baseline\">\n<p dir=\"ltr\" style=\"margin-top: 0pt;margin-right: -36pt;margin-bottom: 0pt\"><span style=\"background-color: transparent;vertical-align: baseline\">Ambos os predicados de \u00edndice (<\/span><span style=\"font-family: 'Courier New';background-color: transparent;vertical-align: baseline\">type = \"route\") <\/span><span style=\"background-color: transparent;vertical-align: baseline\">e<\/span><span style=\"font-family: 'Courier New';background-color: transparent;vertical-align: baseline\"> (v.day = 4)<\/span><span style=\"background-color: transparent;vertical-align: baseline\"> s\u00e3o usados na cl\u00e1usula WHERE. Observe que <\/span><span style=\"font-family: 'Courier New';background-color: transparent;vertical-align: baseline\">(v.day = 4)<\/span><span style=\"background-color: transparent;vertical-align: baseline\">\u00e9 considerado correspondente, porque \u00e9 \"inclu\u00eddo\" por <\/span><span style=\"font-family: 'Courier New';background-color: transparent;vertical-align: baseline\">(v.day &lt;= 5)<\/span><span style=\"background-color: transparent;vertical-align: baseline\">que \u00e9 especificado na defini\u00e7\u00e3o de CREATE INDEX.<\/span><\/p>\n<\/li>\n<\/ol>\n<pre style=\"background-color: #eaeaea\"><code class=\"language-sql\">            EXPLAIN SELECT count(*) FROM `travel-sample` \r\n            USE INDEX(isched)\r\n            WHERE type = \"route\" AND \r\n                  ANY v IN schedule SATISFIES  \r\n                      v.flight LIKE \"UA%\" AND v.day = 4 END;\r\n            {\r\n                   \"requestID\": \"90da999e-114d-4f13-ad6f-d4ab30512b1c\",\r\n                   \"signature\": \"json\",\r\n                   \"results\" : [\r\n                  {\r\n                        \"#operator\": \"Sequence\",\r\n                        \"~children\": [\r\n                          {\r\n                              \"#operator\": \"DistinctScan\",\r\n                              \"scans\": [\r\n                                {\r\n                                    \"#operator\": \"IndexScan\",\r\n                                    \"index\": \"isched\",\r\n                                    \"keyspace\": \"travel-sample\",\r\n                                    \"namespace\": \"default\",\r\n                   ...\r\n                  <\/code><\/pre>\n<ol style=\"margin-top: 0pt;margin-bottom: 0pt;color: #333333;line-height: 20.799999237060547px;text-align: left\" start=\"3;\">\n<li><strong>Desempenho<\/strong>:  Os \u00edndices de matriz aumentam consideravelmente o desempenho das consultas que podem aproveitar o \u00edndice. Por exemplo, a consulta acima em (2), que usa o \u00edndice de matriz\u00a0<em>\"iscada<\/em>\u00a0levou cerca de 256 ms em meu laptop. No entanto, a consulta a seguir usando o \u00edndice\u00a0<em>'def_type'\u00a0<\/em>levou quase 2,38 segundos. Isso representa um desempenho 9 vezes melhor com \u00edndices de matriz.<\/li>\n<\/ol>\n<pre style=\"background-color: #eaeaea\"><code class=\"language-sql\">          SELECT count(*) FROM `travel-sample` \r\n          USE INDEX(def_type)\r\n          WHERE type = \"route\" AND \r\n                ANY v IN schedule SATISFIES\r\n                    v.flight LIKE \"UA%\" AND v.day = 4 END;<\/code><\/pre>\n<p dir=\"ltr\" style=\"margin-top: 0pt;margin-bottom: 0pt\"><span style=\"background-color: transparent;vertical-align: baseline\">Voc\u00ea pode saber mais sobre indexa\u00e7\u00e3o de array e ver mais exemplos, como \u00edndices de array composto e aninhado, na se\u00e7\u00e3o Couchbase 4.5 <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/4.5\/n1ql\/n1ql-language-reference\/indexing-arrays.html\">documenta\u00e7\u00e3o<\/a>e confira o<\/span> <a style=\"text-decoration: none\" href=\"https:\/\/www.youtube.com\/v\/FuCaLGT_q1g?start=36&amp;end=216\"><span style=\"color: #0000ff;background-color: transparent;text-decoration: underline;vertical-align: baseline\">demonstra\u00e7\u00e3o.<\/span><\/a><\/p>\n<p dir=\"ltr\" style=\"margin-top: 0pt;margin-bottom: 0pt;margin-right: -36pt\"><span style=\"background-color: transparent;vertical-align: baseline\">Experimente e me informe se tiver alguma d\u00favida\/coment\u00e1rio ou se ele \u00e9 incr\u00edvel ;-)<\/span><\/p>\n<p dir=\"ltr\" style=\"margin-top: 0pt;margin-bottom: 0pt;margin-right: -36pt\"><span style=\"background-color: transparent;vertical-align: baseline\">Sa\u00fade!!!<\/span><\/p>","protected":false},"excerpt":{"rendered":"<p>\u00a0Couchbase 4.5 is released!! Part2 is a continuation of this blog and it includes covering array indexes, support for more\u00a0operators such as UNNEST, ALL, ANY AND EVERY etc., Do you have documents with embedded arrays and need an efficient means [&hellip;]<\/p>","protected":false},"author":70,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1812],"tags":[2012],"ppma_author":[8935],"class_list":["post-2200","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-n1ql-query","tag-array-indexing"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.3 (Yoast SEO v26.3) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Making the most of your Arrays... with N1QL Array Indexing - The Couchbase Blog<\/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\/making-the-most-of-your-arrays-with-array-indexing\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Making the most of your Arrays... with N1QL Array Indexing\" \/>\n<meta property=\"og:description\" content=\"\u00a0Couchbase 4.5 is released!! Part2 is a continuation of this blog and it includes covering array indexes, support for more\u00a0operators such as UNNEST, ALL, ANY AND EVERY etc., Do you have documents with embedded arrays and need an efficient means [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/making-the-most-of-your-arrays-with-array-indexing\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2016-10-11T00:00:03+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-09T14:19:39+00:00\" \/>\n<meta name=\"author\" content=\"Prasad Varakur, Principal Product Manager, 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=\"Prasad Varakur, Principal Product Manager, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/making-the-most-of-your-arrays-with-array-indexing\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/making-the-most-of-your-arrays-with-array-indexing\/\"},\"author\":{\"name\":\"Prasad Varakur, Principal Product Manager, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c649b2296584f6b734c5a21681137e46\"},\"headline\":\"Making the most of your Arrays&#8230; with N1QL Array Indexing\",\"datePublished\":\"2016-10-11T00:00:03+00:00\",\"dateModified\":\"2025-10-09T14:19:39+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/making-the-most-of-your-arrays-with-array-indexing\/\"},\"wordCount\":899,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/making-the-most-of-your-arrays-with-array-indexing\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"Array Indexing\"],\"articleSection\":[\"SQL++ \/ N1QL Query\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/making-the-most-of-your-arrays-with-array-indexing\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/making-the-most-of-your-arrays-with-array-indexing\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/making-the-most-of-your-arrays-with-array-indexing\/\",\"name\":\"Making the most of your Arrays... with N1QL Array Indexing - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/making-the-most-of-your-arrays-with-array-indexing\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/making-the-most-of-your-arrays-with-array-indexing\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2016-10-11T00:00:03+00:00\",\"dateModified\":\"2025-10-09T14:19:39+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/making-the-most-of-your-arrays-with-array-indexing\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/making-the-most-of-your-arrays-with-array-indexing\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/making-the-most-of-your-arrays-with-array-indexing\/#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\/making-the-most-of-your-arrays-with-array-indexing\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Making the most of your Arrays&#8230; with N1QL Array Indexing\"}]},{\"@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\/c649b2296584f6b734c5a21681137e46\",\"name\":\"Prasad Varakur, Principal Product Manager, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/5d664f4b9aadb80e438fd06cce0d151e\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/3dd2299380c7af4e8a9732a0465d1c082c95eaff26cdf4abf54816d9b693043a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/3dd2299380c7af4e8a9732a0465d1c082c95eaff26cdf4abf54816d9b693043a?s=96&d=mm&r=g\",\"caption\":\"Prasad Varakur, Principal Product Manager, Couchbase\"},\"description\":\"Prasad Varakur is a Principal Product Manager, Couchbase. Prasad is Product and Engineering leader in Databases(SQL, noSQL, Bigdata) &amp; Distributed systems.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/pt\/author\/prasad-varakur\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Making the most of your Arrays... with N1QL Array Indexing - The Couchbase Blog","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\/making-the-most-of-your-arrays-with-array-indexing\/","og_locale":"pt_BR","og_type":"article","og_title":"Making the most of your Arrays... with N1QL Array Indexing","og_description":"\u00a0Couchbase 4.5 is released!! Part2 is a continuation of this blog and it includes covering array indexes, support for more\u00a0operators such as UNNEST, ALL, ANY AND EVERY etc., Do you have documents with embedded arrays and need an efficient means [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/making-the-most-of-your-arrays-with-array-indexing\/","og_site_name":"The Couchbase Blog","article_published_time":"2016-10-11T00:00:03+00:00","article_modified_time":"2025-10-09T14:19:39+00:00","author":"Prasad Varakur, Principal Product Manager, Couchbase","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Prasad Varakur, Principal Product Manager, Couchbase","Est. reading time":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/making-the-most-of-your-arrays-with-array-indexing\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/making-the-most-of-your-arrays-with-array-indexing\/"},"author":{"name":"Prasad Varakur, Principal Product Manager, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c649b2296584f6b734c5a21681137e46"},"headline":"Making the most of your Arrays&#8230; with N1QL Array Indexing","datePublished":"2016-10-11T00:00:03+00:00","dateModified":"2025-10-09T14:19:39+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/making-the-most-of-your-arrays-with-array-indexing\/"},"wordCount":899,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/making-the-most-of-your-arrays-with-array-indexing\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["Array Indexing"],"articleSection":["SQL++ \/ N1QL Query"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/making-the-most-of-your-arrays-with-array-indexing\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/making-the-most-of-your-arrays-with-array-indexing\/","url":"https:\/\/www.couchbase.com\/blog\/making-the-most-of-your-arrays-with-array-indexing\/","name":"Making the most of your Arrays... with N1QL Array Indexing - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/making-the-most-of-your-arrays-with-array-indexing\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/making-the-most-of-your-arrays-with-array-indexing\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2016-10-11T00:00:03+00:00","dateModified":"2025-10-09T14:19:39+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/making-the-most-of-your-arrays-with-array-indexing\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/making-the-most-of-your-arrays-with-array-indexing\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/making-the-most-of-your-arrays-with-array-indexing\/#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\/making-the-most-of-your-arrays-with-array-indexing\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Making the most of your Arrays&#8230; with N1QL Array Indexing"}]},{"@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\/c649b2296584f6b734c5a21681137e46","name":"Prasad Varakur, gerente principal de produtos da Couchbase","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/5d664f4b9aadb80e438fd06cce0d151e","url":"https:\/\/secure.gravatar.com\/avatar\/3dd2299380c7af4e8a9732a0465d1c082c95eaff26cdf4abf54816d9b693043a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3dd2299380c7af4e8a9732a0465d1c082c95eaff26cdf4abf54816d9b693043a?s=96&d=mm&r=g","caption":"Prasad Varakur, Principal Product Manager, Couchbase"},"description":"Prasad Varakur \u00e9 gerente de produto principal da Couchbase. Prasad \u00e9 l\u00edder de produtos e engenharia em bancos de dados (SQL, noSQL, Bigdata) e sistemas distribu\u00eddos.","url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/prasad-varakur\/"}]}},"authors":[{"term_id":8935,"user_id":70,"is_guest":0,"slug":"prasad-varakur","display_name":"Prasad Varakur, Principal Product Manager, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/3dd2299380c7af4e8a9732a0465d1c082c95eaff26cdf4abf54816d9b693043a?s=96&d=mm&r=g","author_category":"","last_name":"Varakur","first_name":"Prasad","job_title":"","user_url":"","description":"Prasad Varakur \u00e9 gerente de produto principal da Couchbase. Prasad \u00e9 l\u00edder de produtos e engenharia em bancos de dados (SQL, noSQL, Bigdata) e sistemas distribu\u00eddos."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/2200","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\/70"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=2200"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/2200\/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=2200"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=2200"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=2200"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=2200"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}