{"id":2245,"date":"2016-06-22T05:08:25","date_gmt":"2016-06-22T05:08:24","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2245"},"modified":"2023-10-06T00:50:02","modified_gmt":"2023-10-06T07:50:02","slug":"introducing-new-advanced-features-to-the-couchbase-shell-cbq","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/introducing-new-advanced-features-to-the-couchbase-shell-cbq\/","title":{"rendered":"Apresentando novos recursos avan\u00e7ados ao Couchbase Shell - CBQ"},"content":{"rendered":"<p>H\u00e1 uma tonelada de novos recursos que foram introduzidos no rec\u00e9m-dispon\u00edvel Couchbase Server 4.5. Query Workbench, APIs de subdocumentos e pesquisa de texto completo s\u00e3o apenas algumas das grandes adi\u00e7\u00f5es a um banco de dados NoSQL que j\u00e1 \u00e9 excelente.<\/p>\n<p>Para este artigo, vamos nos concentrar em alguns dos recursos avan\u00e7ados que envolvem um Couchbase Shell j\u00e1 existente, mas bastante aprimorado - o CBQ.<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/may\/introducing-new-advanced-features-to-the-couchbase-shell---cbq\/advanced-cbq-image.png\" \/><\/p>\n<h2>O que \u00e9 o cliente de consulta do Couchbase (CBQ)?<\/h2>\n<p>Caso esta seja a primeira vez que voc\u00ea se depara com o Couchbase Query Client, tamb\u00e9m conhecido como CBQ, ele \u00e9 um excelente utilit\u00e1rio de linha de comando para executar consultas contra <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/4.5\/introduction\/intro.html\">Servidor Couchbase<\/a>. Ele foi introduzido pela primeira vez no Couchbase Server 4.0 com o lan\u00e7amento da tecnologia N1QL do Couchbase. Se voc\u00ea n\u00e3o conhece o Couchbase ou o NoSQL em geral, o CBQ \u00e9 semelhante a ferramentas como o SQLPlus da Oracle ou a interface de linha de comando do MySQL. Com o lan\u00e7amento do Couchbase Server 4.5, o CBQ evoluiu para o que pode ser melhor descrito como um shell.<\/p>\n<p>Para usar o Couchbase Shell, voc\u00ea deve executar um dos seguintes procedimentos, dependendo do seu sistema operacional. Em um Mac, voc\u00ea usaria o Terminal e executaria:<\/p>\n<pre><code>\r\n.\/Applications\/Couchbase Server.app\/Contents\/Resources\/couchbase-core\/bin\/cbq\r\n<\/code><\/pre>\n<p>No Microsoft Windows, voc\u00ea deve executar o seguinte:<\/p>\n<pre><code>\r\nC:\/Arquivos de Programas\/Couchbase\/Server\/bin\/cbq.exe\r\n<\/code><\/pre>\n<p>\u00c9 claro que em ambos os cen\u00e1rios voc\u00ea precisaria ter o Couchbase Server 4.0 ou superior instalado em seu computador. No entanto, no Couchbase Server 4.5, as coisas mudaram, e quando digo mudaram, quero dizer que ficaram ainda melhores.<\/p>\n<p>Vamos examinar algumas das coisas que voc\u00ea podia fazer antes da vers\u00e3o 4.5, que introduziu recursos avan\u00e7ados de CBQ. A cada solicita\u00e7\u00e3o de CBQ, s\u00e3o retornados determinados dados e informa\u00e7\u00f5es de m\u00e9tricas sobre a consulta executada. Por exemplo, digamos que executemos o seguinte comando simples:<\/p>\n<pre><code>\r\nSELECT 1=1;\r\n<\/code><\/pre>\n<p>O comando acima nos deixar\u00e1 com os seguintes resultados na sa\u00edda do CBQ:<\/p>\n<pre><code>\r\n{\r\n    \"requestID\": \"879a196e-8de4-400b-a6b6-278a66ad1e0b\",\r\n    \"signature\": {\r\n        \"$1\": \"boolean\"\r\n    },\r\n    \"results\": [\r\n        {\r\n            \"$1\": true\r\n        }\r\n    ],\r\n    \"status\": \"success\",\r\n    \"metrics\": {\r\n        \"elapsedTime\": \"30.360043ms\",\r\n        \"executionTime\": \"26.927386ms\",\r\n        \"resultCount\": 1,\r\n        \"resultSize\": 34\r\n    }\r\n}\r\n<\/code><\/pre>\n<p>\u00c9 claro que ele nos diz que nosso resultado \u00e9 verdadeiro, mas tamb\u00e9m nos fornece informa\u00e7\u00f5es como o tempo que levou para ser executado, entre outras. Voc\u00ea deve ignorar o longo tempo de 30 ms porque, em meu ambiente local, tenho especifica\u00e7\u00f5es baixas e \u00edndices m\u00ednimos criados.<\/p>\n<p>O CBQ pode executar consultas DML, al\u00e9m de ser capaz de selecionar dados. A inser\u00e7\u00e3o, atualiza\u00e7\u00e3o, upserting, exclus\u00e3o e recupera\u00e7\u00e3o podem ser feitas com os principais recursos do CBQ.<\/p>\n<h2>Recursos avan\u00e7ados de shell<\/h2>\n<p>\u00c9 prov\u00e1vel que voc\u00ea esteja aqui porque quer saber o que torna o CBQ diferente do Couchbase Server 4.5 e do Couchbase Server 4.1 anterior. Os recursos avan\u00e7ados podem ser divididos em algumas categorias gerais. O que voc\u00ea est\u00e1 prestes a ver \u00e9 apenas uma amostra do que pode ser feito. A documenta\u00e7\u00e3o completa sobre o assunto pode ser encontrada na se\u00e7\u00e3o <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/4.5\/tools\/cbq-shell.html\">Recursos para desenvolvedores do Couchbase<\/a>.<\/p>\n<h3>Gerenciamento de conex\u00f5es<\/h3>\n<p>Com o Couchbase 4.5, voc\u00ea pode se conectar a clusters do Couchbase com o CBQ ou a n\u00f3s de consulta individuais. Isso \u00e9 \u00f3timo quando se trata de solucionar problemas de desempenho do seu banco de dados.<\/p>\n<p>Para se conectar a um cluster, voc\u00ea pode usar a maneira padr\u00e3o e executar <code>.\/cbq<\/code> da linha de comando, ou voc\u00ea pode passar uma tag opcional como esta:<\/p>\n<pre><code>\r\n.\/cbq -e host:8091\r\n<\/code><\/pre>\n<p>Observe que, no exemplo acima, especifiquei a porta 8091 para indicar um cluster. Em vez disso, voc\u00ea pode usar a porta 8093 para especificar um servi\u00e7o de consulta espec\u00edfico. Se preferir se conectar a um cluster ou servi\u00e7o somente depois de iniciar o CBQ, voc\u00ea pode executar o seguinte:<\/p>\n<pre><code>\r\nCONNECT host;\r\n<\/code><\/pre>\n<p>Se for por esse caminho, use <code>DESCONECTAR;<\/code> para encerrar a conex\u00e3o.<\/p>\n<h3>Gerenciamento de seguran\u00e7a<\/h3>\n<p>\u00c9 muito comum e normalmente recomendado que seus dados do Couchbase sejam bloqueados com o uso de credenciais. Voc\u00ea n\u00e3o gostaria que qualquer pessoa acessasse seus dados.<\/p>\n<p>Antes do Couchbase 4.5, n\u00e3o era poss\u00edvel especificar senhas para o seu banco de dados ou buckets no CBQ. Foi a\u00ed que as coisas mudaram. Agora \u00e9 poss\u00edvel especificar nomes de usu\u00e1rio e senhas por meio do CBQ.<\/p>\n<p>Digamos que voc\u00ea queira se conectar ao cluster do Couchbase usando as credenciais de administrador. Voc\u00ea poderia passar uma tag opcional como esta:<\/p>\n<pre><code>\r\n.\/cbq -u=admin -p=password;\r\n<\/code><\/pre>\n<p>Se preferir n\u00e3o expor sua senha no shell, voc\u00ea pode omitir a tag de senha e ele solicitar\u00e1 uma enquanto se conecta.<\/p>\n<p>Digamos que voc\u00ea queira se conectar ao seu banco de dados com mais de um conjunto de credenciais. Voc\u00ea pode passar uma lista de credenciais da seguinte forma:<\/p>\n<pre><code>\r\n.\/cbq -c=beer-sample:pwd1,travel-sample:pwd2\r\n<\/code><\/pre>\n<p>Como no caso dos comandos de conex\u00e3o, talvez voc\u00ea n\u00e3o queira especificar as credenciais no momento da inicializa\u00e7\u00e3o do CBQ. Ao usar o comando <code>CONJUNTO<\/code> e <code>N\u00c3O CONFIGURADO<\/code> com o CBQ em execu\u00e7\u00e3o, voc\u00ea pode especificar as credenciais. Por exemplo, com o CBQ em execu\u00e7\u00e3o, execute o seguinte:<\/p>\n<pre><code>\r\nSET -creds beer-sample:b1, session:s1;\r\n<\/code><\/pre>\n<p>Para limpar as credenciais, basta chamar o comando <code>N\u00c3O CONFIGURADO<\/code> em vez disso.<\/p>\n<h3>Suporte a scripts<\/h3>\n<p>Anteriormente, com o CBQ, voc\u00ea estava limitado \u00e0 execu\u00e7\u00e3o de consultas dentro da ferramenta e n\u00e3o em uma forma de script. No Couchbase Server 4.5, agora voc\u00ea pode criar scripts para execu\u00e7\u00e3o no CBQ. Talvez voc\u00ea tenha scripts de limpeza que queira executar por meio de um cron, ou talvez por algum outro motivo. Voc\u00ea pode fazer algo assim:<\/p>\n<pre><code>\r\n$ echo \"select * from `beer-sample` limit 10;\" | .\/cbq\r\n$ cat file.txt | .\/cbq\r\n$ .\/cbq &lt; file.txt\r\n<\/code><\/pre>\n<p>\u00c9 claro que acima h\u00e1 tr\u00eas maneiras diferentes de fazer as coisas.<\/p>\n<p>\u00c9 comum querer armazenar os resultados da consulta em um arquivo de sa\u00edda. Talvez seus analistas coletem os dados ou talvez voc\u00ea tenha outros scripts que verifiquem se os dados apropriados foram gerados. Para especificar um arquivo de sa\u00edda no momento da inicializa\u00e7\u00e3o, adicione os seguintes par\u00e2metros:<\/p>\n<pre><code>\r\n$ echo \"select * from `beer-sample` limit 10;\" | .\/cbq -o filename.txt\r\n<\/code><\/pre>\n<p>Observe o <code>-o nome do arquivo.txt<\/code> no trecho acima. Os resultados dessa consulta ser\u00e3o salvos em um arquivo.<\/p>\n<h3>Gerenciamento de consultas<\/h3>\n<p>Com o Couchbase 4.5, voc\u00ea pode usar o CBQ para monitorar as opera\u00e7\u00f5es de consultas individuais e n\u00f3s de servi\u00e7o de consulta, bem como interagir com o pr\u00f3prio servi\u00e7o de consulta. Por exemplo, digamos que voc\u00ea tenha uma carga pesada em seu cluster. Uma das coisas l\u00f3gicas a fazer seria ver que tipo de consultas est\u00e3o sendo executadas no momento. Para fazer isso com o CBQ, voc\u00ea pode executar o seguinte:<\/p>\n<pre><code>\r\nSELECT * FROM system:active_requests;\r\n<\/code><\/pre>\n<p>A execu\u00e7\u00e3o do comando acima lhe daria resultados semelhantes aos seguintes:<\/p>\n<pre><code>\r\n{\r\n    \"requestID\": \"7796392a-df14-4687-a885-5db355ba22b9\",\r\n    \"signature\": {\r\n        \"*\": \"*\"\r\n    },\r\n    \"results\": [\r\n        {\r\n            \"active_requests\": {\r\n                \"ElapsedTime\": \"1.160625ms\",\r\n                \"ExecutionTime\": \"1.131825ms\",\r\n                \"PhaseCounts\": {\r\n                    \"PrimaryScan\": 2\r\n                },\r\n                \"PhaseOperators\": {\r\n                    \"Fetch\": 1,\r\n                    \"PrimaryScan\": 1\r\n                },\r\n                \"RequestId\": \"7796392a-df14-4687-a885-5db355ba22b9\",\r\n                \"RequestTime\": \"2016-05-03 08:42:07.733283136 -0400 EDT\",\r\n                \"State\": \"running\",\r\n                \"Statement\": \"SELECT * FROM system:active_requests\"\r\n            }\r\n        }\r\n    ],\r\n    \"status\": \"success\",\r\n    \"metrics\": {\r\n        \"elapsedTime\": \"1.25837ms\",\r\n        \"executionTime\": \"1.229031ms\",\r\n        \"resultCount\": 1,\r\n        \"resultSize\": 610\r\n    }\r\n}\r\n<\/code><\/pre>\n<p>Obviamente, em meu computador local, a \u00fanica consulta que estava sendo executada era a consulta para descobrir as solicita\u00e7\u00f5es ativas no cluster. Em um ambiente de produ\u00e7\u00e3o, esse n\u00famero ser\u00e1 muito maior.<\/p>\n<p>Agora, talvez voc\u00ea perceba que muitas consultas iguais est\u00e3o sendo executadas em sua pesquisa de solicita\u00e7\u00f5es ativas. Pode ser uma boa ideia fazer uma declara\u00e7\u00e3o preparada com elas. No entanto, talvez elas j\u00e1 sejam instru\u00e7\u00f5es preparadas. Voc\u00ea pode verificar executando o seguinte:<\/p>\n<pre><code>\r\nSELECT * FROM system:prepareds;\r\n<\/code><\/pre>\n<p>A consulta acima fornecer\u00e1 informa\u00e7\u00f5es sobre todos os comandos preparados conhecidos e seu estado no cache de comandos preparados do mecanismo de consulta.<\/p>\n<p>E se voc\u00ea tiver feito declara\u00e7\u00f5es preparadas, mas, de vez em quando, o desempenho do seu servidor ainda estiver em alta? Com os recursos do CBQ para gerenciamento de consultas, voc\u00ea pode examinar as consultas lentas, mas conclu\u00eddas. Voc\u00ea pode verificar as consultas anteriores executando o seguinte:<\/p>\n<pre><code>\r\nSELECT * FROM system:completed_requests;\r\n<\/code><\/pre>\n<p>Lembre-se de que mencionei lentid\u00e3o. Voc\u00ea pode determinar a lentid\u00e3o com base em um limite que voc\u00ea define no cbq-engine. Por padr\u00e3o, qualquer consulta executada por mais de 1 segundo entrar\u00e1 nessa categoria, mas talvez voc\u00ea s\u00f3 se preocupe com consultas mais longas. Esse valor pode ser alterado.<\/p>\n<p>Mais informa\u00e7\u00f5es sobre o gerenciamento de consultas podem ser encontradas <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/4.5\/tools\/query-monitoring.html\">aqui<\/a>.<\/p>\n<p>Talvez voc\u00ea esteja mais interessado em executar instru\u00e7\u00f5es preparadas do que em monitorar as atividades de consulta que est\u00e3o acontecendo. No CBQ, voc\u00ea pode usar a fun\u00e7\u00e3o <code>EXECUTAR<\/code> para executar sua declara\u00e7\u00e3o preparada. Algo parecido com isto:<\/p>\n<pre><code>\r\nEXECUTE name-of-prepared-stmt;\r\n<\/code><\/pre>\n<p>Muitas de suas instru\u00e7\u00f5es preparadas ser\u00e3o consultas parametrizadas. Afinal de contas, voc\u00ea est\u00e1 se prevenindo contra a inje\u00e7\u00e3o de SQL. Para passar par\u00e2metros nomeados, voc\u00ea pode fazer o seguinte:<\/p>\n<pre><code>\r\nSET -$r 9.5;\r\nSET -$date \"1-1-2016\";\r\n<\/code><\/pre>\n<p>Esta n\u00e3o \u00e9 a primeira vez que voc\u00ea viu <code>CONJUNTO<\/code>. N\u00f3s o usamos para definir credenciais, mas dessa vez prefixando algo com <code>-$<\/code> estamos dizendo que \u00e9 um par\u00e2metro nomeado.<\/p>\n<p>Se preferir usar par\u00e2metros posicionais, voc\u00ea pode chamar <code>CONJUNTO<\/code> em uma matriz de dados:<\/p>\n<pre><code>\r\nSET -args [ 9.5, \"1-1-2016\"];\r\n<\/code><\/pre>\n<p>Deve <code>EXECU\u00c7\u00c3O<\/code> da sua consulta ficar fora de controle e voc\u00ea precisar interromp\u00ea-la. Basta pressionar <strong>controle+c<\/strong> e ele ir\u00e1 parar.<\/p>\n<h3>Gerenciamento de sess\u00f5es<\/h3>\n<p>O gerenciamento de sess\u00f5es n\u00e3o \u00e9 muito diferente do que j\u00e1 descrevi quando se trata de consultar e adicionar credenciais de usu\u00e1rio. Como parte dos recursos avan\u00e7ados do CBQ, \u00e9 poss\u00edvel gerenciar diferentes sess\u00f5es de shell ou definir v\u00e1rias prefer\u00eancias de usu\u00e1rio.<\/p>\n<p>Anteriormente, voc\u00ea viu como <code>CONJUNTO<\/code> e <code>N\u00c3O CONFIGURADO<\/code> em uma sess\u00e3o, mas voc\u00ea tamb\u00e9m pode usar os par\u00e2metros <code>PUSH<\/code> e <code>POP<\/code>. Em vez de definir um conjunto de par\u00e2metros de n\u00edvel superior, voc\u00ea est\u00e1 criando uma pilha de par\u00e2metros para a sua sess\u00e3o. Isso pode ser \u00fatil para scripts ou qualquer outra coisa.<\/p>\n<p>Digamos que voc\u00ea tenha muitas consultas malucas que planeja usar continuamente com o CBQ. Em vez de ter de se lembrar de cada consulta, voc\u00ea pode definir um alias para elas. Por exemplo:<\/p>\n<pre><code>\r\nALIAS my_query SELECT * FROM `default`;\r\n<\/code><\/pre>\n<p>Sim, a consulta acima n\u00e3o \u00e9 muito complexa, mas poderia ser. Se voc\u00ea quisesse executar essa consulta, poderia executar o seguinte no CBQ:<\/p>\n<pre><code>\r\n\\my_query;\r\n<\/code><\/pre>\n<p>N\u00e3o h\u00e1 muito o que fazer, mas a possibilidade de fazer alias de consultas \u00e9 muito importante quando se pensa em bancos de dados concorrentes. O aliasing de consultas \u00e9 um recurso exclusivo do Couchbase e pode lhe poupar muito tempo ao fazer consultas.<\/p>\n<h2>Conclus\u00e3o<\/h2>\n<p>Voc\u00ea acabou de experimentar alguns dos novos recursos do CBQ que apareceram a partir do Couchbase Server 4.5. Voc\u00ea pode mexer nos recursos de gerenciamento de conex\u00e3o, seguran\u00e7a, cria\u00e7\u00e3o de scripts, gerenciamento e monitoramento de consultas e gerenciamento de sess\u00f5es para aumentar sua produtividade com o Couchbase Server.<\/p>\n<p>Para obter uma lista mais completa de comandos e recursos, visite o site <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/4.5\/tools\/cbq-shell.html\">documenta\u00e7\u00e3o oficial<\/a> no <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/developers\/?utm_source=blogs&amp;utm_medium=link&amp;utm_campaign=blogs\">portal do desenvolvedor<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>There are a ton of new features that have been introduced in newly available Couchbase Server 4.5. Query Workbench, sub-document APIs, and full text search are only some of the great additions to an already great NoSQL database. For this [&hellip;]<\/p>","protected":false},"author":63,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1816],"tags":[],"ppma_author":[9032],"class_list":["post-2245","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-server"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.1 (Yoast SEO v26.1.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Introduction to the New Advanced Features to the Couchbase Shell \u2013 CBQ<\/title>\n<meta name=\"description\" content=\"This article focus on some of the advanced features wrapped around an already existing, but heavily improved Couchbase Shell \u2013 CBQ.\" \/>\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\/introducing-new-advanced-features-to-the-couchbase-shell---cbq\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Introducing New Advanced Features to the Couchbase Shell - CBQ\" \/>\n<meta property=\"og:description\" content=\"This article focus on some of the advanced features wrapped around an already existing, but heavily improved Couchbase Shell \u2013 CBQ.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/introducing-new-advanced-features-to-the-couchbase-shell---cbq\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/thepolyglotdeveloper\" \/>\n<meta property=\"article:published_time\" content=\"2016-06-22T05:08:24+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-10-06T07:50:02+00:00\" \/>\n<meta name=\"author\" content=\"Nic Raboy, Developer Advocate, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@nraboy\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Nic Raboy, Developer Advocate, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-new-advanced-features-to-the-couchbase-shell---cbq\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-new-advanced-features-to-the-couchbase-shell-cbq\/\"},\"author\":{\"name\":\"Nic Raboy, Developer Advocate, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1\"},\"headline\":\"Introducing New Advanced Features to the Couchbase Shell &#8211; CBQ\",\"datePublished\":\"2016-06-22T05:08:24+00:00\",\"dateModified\":\"2023-10-06T07:50:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-new-advanced-features-to-the-couchbase-shell-cbq\/\"},\"wordCount\":1533,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-new-advanced-features-to-the-couchbase-shell---cbq\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"Couchbase Server\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/introducing-new-advanced-features-to-the-couchbase-shell---cbq\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-new-advanced-features-to-the-couchbase-shell-cbq\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/introducing-new-advanced-features-to-the-couchbase-shell---cbq\/\",\"name\":\"Introduction to the New Advanced Features to the Couchbase Shell \u2013 CBQ\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-new-advanced-features-to-the-couchbase-shell---cbq\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-new-advanced-features-to-the-couchbase-shell---cbq\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2016-06-22T05:08:24+00:00\",\"dateModified\":\"2023-10-06T07:50:02+00:00\",\"description\":\"This article focus on some of the advanced features wrapped around an already existing, but heavily improved Couchbase Shell \u2013 CBQ.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-new-advanced-features-to-the-couchbase-shell---cbq\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/introducing-new-advanced-features-to-the-couchbase-shell---cbq\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-new-advanced-features-to-the-couchbase-shell---cbq\/#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\/introducing-new-advanced-features-to-the-couchbase-shell---cbq\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Introducing New Advanced Features to the Couchbase Shell &#8211; CBQ\"}]},{\"@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\/bb545ebe83bb2d12f91095811d0a72e1\",\"name\":\"Nic Raboy, Developer Advocate, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/8863514d8bed0cf6080f23db40e00354\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g\",\"caption\":\"Nic Raboy, Developer Advocate, Couchbase\"},\"description\":\"Nic Raboy is an advocate of modern web and mobile development technologies. He has experience in Java, JavaScript, Golang and a variety of frameworks such as Angular, NativeScript, and Apache Cordova. Nic writes about his development experiences related to making web and mobile development easier to understand.\",\"sameAs\":[\"https:\/\/www.thepolyglotdeveloper.com\",\"https:\/\/www.facebook.com\/thepolyglotdeveloper\",\"https:\/\/x.com\/nraboy\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/pt\/author\/nic-raboy-2\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Introduction to the New Advanced Features to the Couchbase Shell \u2013 CBQ","description":"This article focus on some of the advanced features wrapped around an already existing, but heavily improved Couchbase Shell \u2013 CBQ.","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\/introducing-new-advanced-features-to-the-couchbase-shell---cbq\/","og_locale":"pt_BR","og_type":"article","og_title":"Introducing New Advanced Features to the Couchbase Shell - CBQ","og_description":"This article focus on some of the advanced features wrapped around an already existing, but heavily improved Couchbase Shell \u2013 CBQ.","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/introducing-new-advanced-features-to-the-couchbase-shell---cbq\/","og_site_name":"The Couchbase Blog","article_author":"https:\/\/www.facebook.com\/thepolyglotdeveloper","article_published_time":"2016-06-22T05:08:24+00:00","article_modified_time":"2023-10-06T07:50:02+00:00","author":"Nic Raboy, Developer Advocate, Couchbase","twitter_card":"summary_large_image","twitter_creator":"@nraboy","twitter_misc":{"Written by":"Nic Raboy, Developer Advocate, Couchbase","Est. reading time":"7 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/introducing-new-advanced-features-to-the-couchbase-shell---cbq\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/introducing-new-advanced-features-to-the-couchbase-shell-cbq\/"},"author":{"name":"Nic Raboy, Developer Advocate, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1"},"headline":"Introducing New Advanced Features to the Couchbase Shell &#8211; CBQ","datePublished":"2016-06-22T05:08:24+00:00","dateModified":"2023-10-06T07:50:02+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/introducing-new-advanced-features-to-the-couchbase-shell-cbq\/"},"wordCount":1533,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/introducing-new-advanced-features-to-the-couchbase-shell---cbq\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["Couchbase Server"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/introducing-new-advanced-features-to-the-couchbase-shell---cbq\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/introducing-new-advanced-features-to-the-couchbase-shell-cbq\/","url":"https:\/\/www.couchbase.com\/blog\/introducing-new-advanced-features-to-the-couchbase-shell---cbq\/","name":"Introduction to the New Advanced Features to the Couchbase Shell \u2013 CBQ","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/introducing-new-advanced-features-to-the-couchbase-shell---cbq\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/introducing-new-advanced-features-to-the-couchbase-shell---cbq\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2016-06-22T05:08:24+00:00","dateModified":"2023-10-06T07:50:02+00:00","description":"This article focus on some of the advanced features wrapped around an already existing, but heavily improved Couchbase Shell \u2013 CBQ.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/introducing-new-advanced-features-to-the-couchbase-shell---cbq\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/introducing-new-advanced-features-to-the-couchbase-shell---cbq\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/introducing-new-advanced-features-to-the-couchbase-shell---cbq\/#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\/introducing-new-advanced-features-to-the-couchbase-shell---cbq\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Introducing New Advanced Features to the Couchbase Shell &#8211; CBQ"}]},{"@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\/bb545ebe83bb2d12f91095811d0a72e1","name":"Nic Raboy, defensor dos desenvolvedores, Couchbase","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/8863514d8bed0cf6080f23db40e00354","url":"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g","caption":"Nic Raboy, Developer Advocate, Couchbase"},"description":"Nic Raboy \u00e9 um defensor das modernas tecnologias de desenvolvimento m\u00f3vel e da Web. Ele tem experi\u00eancia em Java, JavaScript, Golang e uma variedade de estruturas, como Angular, NativeScript e Apache Cordova. Nic escreve sobre suas experi\u00eancias de desenvolvimento relacionadas a tornar o desenvolvimento m\u00f3vel e da Web mais f\u00e1cil de entender.","sameAs":["https:\/\/www.thepolyglotdeveloper.com","https:\/\/www.facebook.com\/thepolyglotdeveloper","https:\/\/x.com\/nraboy"],"url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/nic-raboy-2\/"}]}},"authors":[{"term_id":9032,"user_id":63,"is_guest":0,"slug":"nic-raboy-2","display_name":"Nic Raboy, Developer Advocate, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g","author_category":"","last_name":"Raboy","first_name":"Nic","job_title":"","user_url":"https:\/\/www.thepolyglotdeveloper.com","description":"Nic Raboy \u00e9 um defensor das modernas tecnologias de desenvolvimento m\u00f3vel e da Web. Ele tem experi\u00eancia em Java, JavaScript, Golang e uma variedade de estruturas, como Angular, NativeScript e Apache Cordova. Nic escreve sobre suas experi\u00eancias de desenvolvimento relacionadas a tornar o desenvolvimento m\u00f3vel e da Web mais f\u00e1cil de entender."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/2245","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\/63"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=2245"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/2245\/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=2245"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=2245"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=2245"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=2245"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}