{"id":8478,"date":"2020-04-25T12:51:59","date_gmt":"2020-04-25T19:51:59","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=8478"},"modified":"2025-06-13T23:42:43","modified_gmt":"2025-06-14T06:42:43","slug":"introduction-to-couchbase-for-mongodb-developers-and-experts","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/introduction-to-couchbase-for-mongodb-developers-and-experts\/","title":{"rendered":"Introdu\u00e7\u00e3o ao Couchbase para desenvolvedores de MongoDB e especialistas em NoSQL"},"content":{"rendered":"<blockquote>\n<h4>H\u00e1 seis mil anos, os sum\u00e9rios inventaram a escrita para o processamento de transa\u00e7\u00f5es. <a href=\"https:\/\/www.amazon.com\/Transaction-Processing-Concepts-Techniques-Management\/dp\/1558601902\">Gray e Reuter<\/a><\/h4>\n<\/blockquote>\n<p><span style=\"font-weight: 400\">De qualquer forma, o MongoDB \u00e9 um banco de dados JSON popular orientado a documentos. Nos \u00faltimos doze anos, ele cresceu de seu in\u00edcio humilde de um \u00fanico bloqueio por banco de dados para uma transa\u00e7\u00e3o moderna de v\u00e1rios documentos com isolamento de instant\u00e2neos.  A MongoDB University treinou um grande n\u00famero de desenvolvedores para desenvolver no banco de dados MongoDB.<\/span><\/p>\n<p>Atualmente, existem muitos bancos de dados JSON. <span style=\"font-weight: 400\">Embora seja f\u00e1cil come\u00e7ar com o MongoDB para aprender a usar o NoSQL e o esquema JSON flex\u00edvel, muitos clientes escolhem o Couchbase por causa do desempenho, da escala e do SQL. <\/span><span style=\"font-weight: 400\">\u00c0 medida que avan\u00e7a na avalia\u00e7\u00e3o e evolu\u00e7\u00e3o do banco de dados, voc\u00ea deve aprender sobre outros bancos de dados JSON. Estamos trabalhando em um curso de treinamento on-line para que os especialistas em MongoDB aprendam facilmente o Couchbase.  At\u00e9 publicarmos esse curso, voc\u00ea ter\u00e1 que ler este artigo :-)\u00a0 <\/span><\/p>\n<p><span style=\"font-weight: 400\">Se voc\u00ea conhece RDBMS como Microsoft SQL Server e Oracle, temos cursos f\u00e1ceis de seguir para aprender a mapear seu conhecimento de banco de dados para o Couchbase com esses dois cursos:<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400\"><a href=\"https:\/\/learn.couchbase.com\/store\/404716-cb116m-intro-to-couchbase-for-mssql-experts\"><span style=\"font-weight: 400\">CB116m - Introdu\u00e7\u00e3o ao Couchbase para especialistas em MSSQL<\/span><\/a><\/li>\n<li style=\"font-weight: 400\"><a href=\"https:\/\/learn.couchbase.com\/store\/400375-cb116o-introduction-to-couchbase-for-oracle-experts\"><span style=\"font-weight: 400\">CB116o - Introdu\u00e7\u00e3o ao Couchbase para especialistas em Oracle<\/span><\/a><\/li>\n<\/ol>\n<p><strong>RESUMO<\/strong><\/p>\n<p>O MongoDB e o Couchbase t\u00eam muitas coisas em comum. Ambos s\u00e3o NoSQL <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/distributed-databases-overview\/\">bancos de dados distribu\u00eddos<\/a>Ambos usam o modelo JSON; ambos t\u00eam linguagens de consulta de alto n\u00edvel com suporte para opera\u00e7\u00f5es select-join-project; ambos t\u00eam \u00edndices secund\u00e1rios; ambos t\u00eam um otimizador que escolhe o plano de consulta automaticamente. Ambos suportam replica\u00e7\u00e3o intra e intercluster.<\/p>\n<p>Como era de se esperar, h\u00e1 diferen\u00e7as.  Algumas s\u00e3o mais significativas do que outras.  O Couchbase foi projetado para ser distribu\u00eddo desde o in\u00edcio.  Por exemplo, o cont\u00eainer de dados Bucket \u00e9 sempre distribu\u00eddo - sem nada para fragmentar.  Basta adicionar novos n\u00f3s e o sistema distribuir\u00e1 automaticamente. A replica\u00e7\u00e3o intracluster n\u00e3o requer novos servidores - basta definir o n\u00famero de r\u00e9plicas e est\u00e1 tudo pronto. Do ponto de vista da intera\u00e7\u00e3o com o desenvolvedor, a grande diferen\u00e7a \u00e9 a pr\u00f3pria linguagem de consulta - o MongoDB tem uma linguagem <a href=\"https:\/\/docs.mongodb.com\/manual\/tutorial\/query-documents\/\">linguagem de consulta propriet\u00e1ria<\/a> e o Couchbase tem <a href=\"https:\/\/docs.couchbase.com\/server\/6.5\/n1ql\/n1ql-language-reference\/selectintro.html\">N1QL - SQL para JSON<\/a>. O MongoDB tamb\u00e9m usa seu \u00edndice baseado em B-Tree para pesquisa e lan\u00e7ou recentemente o <a href=\"https:\/\/docs.atlas.mongodb.com\/reference\/atlas-search\/query-syntax\/\">$searchbeta<\/a> para o servi\u00e7o Atlas usando o Apache Lucene; o Couchbase tem um <a href=\"https:\/\/docs.couchbase.com\/server\/current\/fts\/fts-supported-queries.html\">Pesquisa de texto completo<\/a>.<\/p>\n<p>Esperamos que as diferen\u00e7as no Couchbase sejam aquelas que facilitam sua vida.  Vamos nos aprofundar.<\/p>\n<p><span style=\"color: #0000ff\"><b>T\u00d3PICOS DE ALTO N\u00cdVEL<\/b><\/span><\/p>\n<ol>\n<li>Recursos<\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Arquitetura<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Objetos de banco de dados<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Tipos de dados<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Modelo de dados<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">SDK<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Linguagem de consulta<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">\u00cdndices<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Otimizador<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Transa\u00e7\u00f5es<\/span><\/li>\n<li>An\u00e1lises<\/li>\n<\/ol>\n<h4 role=\"presentation\"><span style=\"color: #0000ff\"><strong>RECURSOS<\/strong><\/span><\/h4>\n<div dir=\"ltr\" align=\"left\">\n<table>\n<tbody>\n<tr>\n<td><\/td>\n<td>\n<h4><strong>MongoDB<\/strong><\/h4>\n<\/td>\n<td>\n<h4><strong>Couchbase<\/strong><\/h4>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p dir=\"ltr\">Documentos<\/p>\n<\/td>\n<td>\n<p dir=\"ltr\"><a href=\"https:\/\/docs.mongodb.com\/\">https:\/\/docs.mongodb.com\/<\/a><\/p>\n<\/td>\n<td>\n<p dir=\"ltr\"><a href=\"https:\/\/docs.couchbase.com\/home\/index.html\">https:\/\/docs.couchbase.com\/home\/index.html<\/a><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p dir=\"ltr\">F\u00f3runs<\/p>\n<\/td>\n<td>\n<p dir=\"ltr\"><a href=\"https:\/\/developer.mongodb.com\/community\/forums\/\">https:\/\/developer.mongodb.com\/community\/forums\/<\/a><\/p>\n<\/td>\n<td>\n<p dir=\"ltr\"><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/forums\/\">https:\/\/www.couchbase.com\/forums\/<\/a><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p dir=\"ltr\">Vers\u00e3o mais recente <span style=\"font-family: inherit;font-size: inherit\">(Abril de 2020)<\/span><\/p>\n<\/td>\n<td>\n<p dir=\"ltr\">4.2.6<\/p>\n<\/td>\n<td>\n<p dir=\"ltr\">6.5.1<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p dir=\"ltr\">Licen\u00e7a<\/p>\n<\/td>\n<td>\n<p dir=\"ltr\"><a href=\"https:\/\/www.mongodb.com\/licensing\/server-side-public-license\/faq\">https:\/\/www.mongodb.com\/licensing\/server-side-public-license\/faq<\/a><\/p>\n<\/td>\n<td>\n<p dir=\"ltr\"><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/licensing-and-support-faq\/\">https:\/\/www.couchbase.com\/licensing-and-support-faq<\/a><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p dir=\"ltr\">Linguagem de consulta<\/p>\n<\/td>\n<td>\n<p dir=\"ltr\"><a href=\"https:\/\/docs.mongodb.com\/manual\/tutorial\/query-documents\/\">Linguagem de consulta do MongoDB<\/a><\/p>\n<\/td>\n<td>\n<p dir=\"ltr\"><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/products\/n1ql\/\">N1QL - SQL para JSON<\/a><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h4 role=\"presentation\"><span style=\"color: #0000ff\"><strong>ARQUITETURA<\/strong><\/span><\/h4>\n<p dir=\"ltr\"><strong>Vers\u00e3o para laptop:\u00a0<\/strong><\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/04\/Screen-Shot-2020-04-22-at-7.17.08-PM.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-8487 alignleft\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/04\/Screen-Shot-2020-04-22-at-7.17.08-PM.png\" alt=\"\" width=\"208\" height=\"300\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-22-at-7.17.08-PM.png 208w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-22-at-7.17.08-PM-14x20.png 14w\" sizes=\"auto, (max-width: 208px) 100vw, 208px\" \/><\/a><\/p>\n<p><strong>MongoDB:<\/strong> \u00a0Basta instalar e usar o Mongodb em seu laptop com os par\u00e2metros corretos e pronto.  Um \u00fanico processo para lidar com todo o banco de dados.  Isso mudou um pouco na vers\u00e3o 4.2, em que voc\u00ea precisaria do mongos para executar suas transa\u00e7\u00f5es. Todos os recursos do MongoDB (dados, indexa\u00e7\u00e3o, consulta) est\u00e3o dispon\u00edveis aqui, exceto a pesquisa de texto completo, dispon\u00edvel apenas no servi\u00e7o Atlas.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><b><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/04\/Screen-Shot-2020-04-22-at-7.21.51-PM.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-8486 alignleft\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/04\/Screen-Shot-2020-04-22-at-7.21.51-PM-215x300.png\" alt=\"\" width=\"215\" height=\"300\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-22-at-7.21.51-PM-215x300.png 215w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-22-at-7.21.51-PM.png 216w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-22-at-7.21.51-PM-14x20.png 14w\" sizes=\"auto, (max-width: 215px) 100vw, 215px\" \/><\/a>Couchbase: <\/b><span style=\"font-weight: 400\">O Couchbase \u00e9 diferente.  Ele abstraiu cada um dos servi\u00e7os (dados, \u00edndice, consulta, pesquisa, an\u00e1lise, eventos) e voc\u00ea tem a op\u00e7\u00e3o de escolher quais dos recursos deseja executar em sua inst\u00e2ncia para otimizar os recursos. Uma instala\u00e7\u00e3o t\u00edpica tem dados, \u00edndice e consulta.  A pesquisa, os eventos e a an\u00e1lise ser\u00e3o executados em seu laptop - instale e use-os de acordo com seu caso de uso.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><b>Implanta\u00e7\u00e3o de cluster: <\/b><span style=\"font-weight: 400\">Como acontece com a maioria dos bancos de dados NoSQL, tanto o MongoDB quanto o Couchbase podem ser escalonados. No MongoDB, voc\u00ea pode escalonar por <\/span><a href=\"https:\/\/docs.mongodb.com\/manual\/sharding\/\"><span style=\"font-weight: 400\">fragmenta\u00e7\u00e3o<\/span><\/a><span style=\"font-weight: 400\"> a cole\u00e7\u00e3o em v\u00e1rios n\u00f3s. Voc\u00ea pode fragmentar por hash ou intervalo.  Sem um shard expl\u00edcito, cada cole\u00e7\u00e3o permanece em um \u00fanico shard.  Os servidores de configura\u00e7\u00e3o armazenam os metadados e a configura\u00e7\u00e3o do cluster. O MongoDB \u00e9 distribu\u00eddo de maneira uniforme e o Couchbase \u00e9 distribu\u00eddo de maneira multidimensional.  O processo (servi\u00e7o) do Mongodb gerencia os dados, o \u00edndice e a consulta em cada fragmento (n\u00f3), enquanto o Mongos faz o processamento da consulta distribu\u00edda e a fus\u00e3o dos resultados intermedi\u00e1rios e n\u00e3o gerencia nenhum dado ou \u00edndice.  O Mongos atua como coordenador e o mongodb \u00e9 a abelha oper\u00e1ria.\u00a0<\/span><\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/04\/Screen-Shot-2020-04-23-at-7.32.09-AM.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-8482\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/04\/Screen-Shot-2020-04-23-at-7.32.09-AM-300x162.png\" alt=\"\" width=\"684\" height=\"370\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-23-at-7.32.09-AM-300x162.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-23-at-7.32.09-AM-1024x552.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-23-at-7.32.09-AM-768x414.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-23-at-7.32.09-AM-20x11.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-23-at-7.32.09-AM.png 1146w\" sizes=\"auto, (max-width: 684px) 100vw, 684px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400\">O Couchbase pode ser implantado em uma distribui\u00e7\u00e3o uniforme com cada n\u00f3 gerenciando os dados e todos os servi\u00e7os - dados, \u00edndice, consulta, an\u00e1lise e eventos.  Cada servi\u00e7o \u00e9 uma camada do banco de dados tradicional. Esses servi\u00e7os s\u00e3o fracamente acoplados - eles s\u00e3o executados em diferentes espa\u00e7os de processo e se comunicam por meio de uma rede.  Portanto, eles podem ser implantados uniformemente em um \u00fanico n\u00f3 ou distribu\u00eddos multidimensionalmente em um cluster. A escolha depende de sua carga de trabalho e dos SLAs. Os dados em si s\u00e3o armazenados em buckets. Todos os buckets s\u00e3o particionados por hash entre determinados n\u00f3s - isso \u00e9 autom\u00e1tico e n\u00e3o requer nenhuma especifica\u00e7\u00e3o. Quando o aplicativo tem as chaves do documento, ele pode operar diretamente nos dados sem nenhum n\u00f3 intermedi\u00e1rio.  Essa \u00e9 uma das principais diferen\u00e7as arquitet\u00f4nicas que contribuem para o alto desempenho e a expans\u00e3o do Couchbase.   Al\u00e9m disso, n\u00e3o h\u00e1 servidores de configura\u00e7\u00e3o. Os metadados e seu gerenciamento s\u00e3o incorporados ao banco de dados principal.   O servi\u00e7o de dados gerencia os dados, o cluster e a replica\u00e7\u00e3o em um cluster do Couchbase. A replica\u00e7\u00e3o entre v\u00e1rios clusters do Couchbase \u00e9 gerenciada pelo XDCR.  Leia este artigo para entender os mecanismos de replica\u00e7\u00e3o no MongoDB e no Couchbase:\u00a0 <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/replication-in-nosql-document-databases-mongo-db-vs-couchbase\/\">Replica\u00e7\u00e3o em bancos de dados de documentos NoSQL (Mongo DB vs Couchbase)<\/a><\/span><\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/04\/Screen-Shot-2020-04-22-at-7.32.03-PM.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-8483\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/04\/Screen-Shot-2020-04-22-at-7.32.03-PM-300x115.png\" alt=\"\" width=\"716\" height=\"274\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-22-at-7.32.03-PM-300x115.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-22-at-7.32.03-PM-768x295.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-22-at-7.32.03-PM-20x8.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-22-at-7.32.03-PM.png 1020w\" sizes=\"auto, (max-width: 716px) 100vw, 716px\" \/><\/a><\/p>\n<p><b>Dentro da implanta\u00e7\u00e3o do cluster.<\/b><\/p>\n<p><span style=\"font-weight: 400\">Os componentes e a implanta\u00e7\u00e3o do cluster do MongoDB s\u00e3o explicados <\/span><a href=\"https:\/\/docs.mongodb.com\/manual\/core\/sharded-cluster-components\/\"><span style=\"font-weight: 400\">aqui<\/span><\/a><span style=\"font-weight: 400\"> e assumo isso como conhecimento pr\u00e9vio.  Evitarei repetir.<\/span><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/04\/Screen-Shot-2020-04-23-at-7.32.09-AM.png\"><br \/>\n<\/a><\/p>\n<p><span style=\"font-weight: 400\">A implanta\u00e7\u00e3o do Couchbase come\u00e7a com o servi\u00e7o de dados de valor-chave.  Esse \u00e9 o armazenamento de dados de valor-chave distribu\u00eddo em hash (consistente). Ele tamb\u00e9m tem replica\u00e7\u00e3o intracluster integrada, eliminando qualquer necessidade de servidores de r\u00e9plica ou servidores de configura\u00e7\u00e3o separados.  O servi\u00e7o de consulta orquestra a execu\u00e7\u00e3o de <\/span><a href=\"https:\/\/query-tutorial.couchbase.com\/tutorial\/#1\"><span style=\"font-weight: 400\">N1QL<\/span><\/a><span style=\"font-weight: 400\"> consultas. Usos <\/span><a href=\"https:\/\/docs.couchbase.com\/server\/6.5\/learn\/services-and-indexes\/indexes\/global-secondary-indexes.html\"><span style=\"font-weight: 400\">GSI<\/span><\/a><span style=\"font-weight: 400\"> (Indexa\u00e7\u00e3o secund\u00e1ria global), <\/span><a href=\"https:\/\/docs.couchbase.com\/server\/current\/fts\/full-text-intro.html\"><span style=\"font-weight: 400\">FTS<\/span><\/a><span style=\"font-weight: 400\"> (Full-Text Search) conforme necess\u00e1rio.  O FTS gerencia o \u00edndice de texto completo e pode ser consultado <\/span><a href=\"https:\/\/docs.couchbase.com\/server\/current\/fts\/fts-supported-queries.html\"><span style=\"font-weight: 400\">diretamente<\/span><\/a><span style=\"font-weight: 400\"> ou atrav\u00e9s do N1QL <\/span><a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-language-reference\/searchfun.html\"><span style=\"font-weight: 400\">servi\u00e7o de consulta<\/span><\/a><span style=\"font-weight: 400\">.\u00a0 <\/span><a href=\"https:\/\/docs.couchbase.com\/server\/6.5\/eventing\/eventing-overview.html\"><span style=\"font-weight: 400\">A fun\u00e7\u00e3o Eventing<\/span><\/a><span style=\"font-weight: 400\"> permite que voc\u00ea acione automaticamente a a\u00e7\u00e3o (executando uma fun\u00e7\u00e3o Javascript) na muta\u00e7\u00e3o de dados.  O Couchbase <\/span><a href=\"https:\/\/docs.couchbase.com\/server\/current\/learn\/services-and-indexes\/services\/analytics-service.html\"><span style=\"font-weight: 400\">Mecanismo de an\u00e1lise<\/span><\/a><span style=\"font-weight: 400\"> \u00e9 um mecanismo de consulta e dados MPP.  Faz uma c\u00f3pia dos dados e os redistribui em seus n\u00f3s, executa a consulta em paralelo para obter o melhor desempenho poss\u00edvel. Tudo isso pode ser usado sem problemas pelo rico conjunto de APIs dispon\u00edveis em nosso <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/downloads\/start-today\/?family=couchbase-server&amp;utm_source=google&amp;utm_medium=search&amp;utm_campaign=Brand+-+US+-+Desktop+-+GGL+-+Phrase&amp;utm_keyword=couchbase%20sdk&amp;kpid=go_cmp-6775677964_adg-79925396592_ad-389053503283_kwd-825033165336_dev-c_ext-_prd-&amp;gclid=EAIaIQobChMI6uycotr_6AIV3QiICR3huAKAEAAYASAAEgLIo_D_BwE\"><span style=\"font-weight: 400\">SDKs<\/span><\/a><span style=\"font-weight: 400\"> dispon\u00edvel em todos os idiomas populares.\u00a0<\/span><\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/04\/Screen-Shot-2020-04-23-at-7.50.37-AM.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-8481\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/04\/Screen-Shot-2020-04-23-at-7.50.37-AM-300x127.png\" alt=\"\" width=\"789\" height=\"334\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-23-at-7.50.37-AM-300x127.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-23-at-7.50.37-AM-1024x435.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-23-at-7.50.37-AM-768x326.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-23-at-7.50.37-AM-1536x652.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-23-at-7.50.37-AM-20x8.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-23-at-7.50.37-AM-1320x560.png 1320w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-23-at-7.50.37-AM.png 1654w\" sizes=\"auto, (max-width: 789px) 100vw, 789px\" \/><\/a><\/p>\n<h4><span style=\"color: #0000ff\"><strong>OBJETOS DE BANCO DE DADOS<\/strong><\/span><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/04\/Screen-Shot-2020-04-23-at-7.32.09-AM.png\"><br \/>\n<\/a><\/h4>\n<p><span style=\"font-weight: 400\">O MongoDB tem uma cole\u00e7\u00e3o e um banco de dados como objetos l\u00f3gicos com os quais os usu\u00e1rios precisam trabalhar. Tradicionalmente, o Couchbase tinha apenas o <\/span><a href=\"https:\/\/docs.couchbase.com\/server\/current\/learn\/buckets-memory-and-storage\/buckets.html\"><span style=\"font-weight: 400\">Baldes<\/span><\/a><span style=\"font-weight: 400\">. O Bucket funcionava tanto para o gerenciamento de recursos (por exemplo, a quantidade de mem\u00f3ria usada), quanto para a seguran\u00e7a e o cont\u00eainer de dados. Em 6.5, introduzimos a no\u00e7\u00e3o de <\/span><a href=\"https:\/\/docs.couchbase.com\/server\/current\/developer-preview\/collections\/collections-overview.html\"><span style=\"font-weight: 400\">coleta e escopo<\/span><\/a><span style=\"font-weight: 400\"> como uma pr\u00e9via para desenvolvedores.  Essa hierarquia bucket:scope:collection \u00e9 an\u00e1loga \u00e0 database:schema:table do RDBMS.  Isso torna o banco de dados mais seguro e um melhor multilocat\u00e1rio.  Na vers\u00e3o 6.5, sem a visualiza\u00e7\u00e3o para desenvolvedores, cada compartimento usa um escopo e uma cole\u00e7\u00e3o padr\u00e3o, o que torna a transi\u00e7\u00e3o perfeita.<\/span><\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/04\/Screen-Shot-2020-04-23-at-4.48.44-PM.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-8479\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/04\/Screen-Shot-2020-04-23-at-4.48.44-PM-300x175.png\" alt=\"\" width=\"622\" height=\"365\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-23-at-4.48.44-PM-300x175.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-23-at-4.48.44-PM-20x12.png 20w\" sizes=\"auto, (max-width: 622px) 100vw, 622px\" \/><\/a><\/p>\n<div dir=\"ltr\" align=\"left\">\n<table>\n<tbody>\n<tr>\n<td>\n<p dir=\"ltr\"><strong>RDBMS<\/strong><\/p>\n<\/td>\n<td>\n<p dir=\"ltr\"><strong>MongoDB<\/strong><\/p>\n<\/td>\n<td>\n<p dir=\"ltr\"><strong>Couchbase<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p dir=\"ltr\">Banco de dados<\/p>\n<\/td>\n<td>\n<p dir=\"ltr\">Banco de dados<\/p>\n<\/td>\n<td>\n<p dir=\"ltr\">Balde<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p dir=\"ltr\">Tabela<\/p>\n<\/td>\n<td>\n<p dir=\"ltr\">Cole\u00e7\u00e3o<\/p>\n<\/td>\n<td>\n<p dir=\"ltr\">Balde<\/p>\n<p dir=\"ltr\">Futuro: Cole\u00e7\u00e3o<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p dir=\"ltr\">Linha<\/p>\n<\/td>\n<td>\n<p dir=\"ltr\">Documento (BSON)<\/p>\n<\/td>\n<td>\n<p dir=\"ltr\">Documento (JSON padr\u00e3o)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p dir=\"ltr\">Coluna<\/p>\n<\/td>\n<td>\n<p dir=\"ltr\">Campo\/Atributo<\/p>\n<\/td>\n<td>\n<p dir=\"ltr\">Campo\/Atributo<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p dir=\"ltr\">Parti\u00e7\u00e3o (tabela\/cole\u00e7\u00e3o\/bucket)<\/p>\n<\/td>\n<td>\n<p dir=\"ltr\">N\u00e3o particionado por padr\u00e3o.<\/p>\n<p dir=\"ltr\">O particionamento de hash e intervalo (sharding) \u00e9 suportado manualmente.<\/p>\n<\/td>\n<td>\n<p dir=\"ltr\">Parti\u00e7\u00e3o (hash autom\u00e1tico)<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h4 role=\"presentation\"><strong>Notas para os desenvolvedores<\/strong><\/h4>\n<p>No MongoDB, voc\u00ea come\u00e7a com sua inst\u00e2ncia (implanta\u00e7\u00e3o) e cria bancos de dados, cole\u00e7\u00f5es e \u00edndices.<\/p>\n<p>No Couchbase, voc\u00ea come\u00e7a com sua inst\u00e2ncia e cria seus buckets e \u00edndices. Cada bucket pode ter v\u00e1rios tipos de documentos, portanto, cada documento deve ter um campo designado pelo aplicativo para reconhecer seu tipo. {\"type\": \"parts\"}. Como cada compartimento pode ter qualquer n\u00famero de tipos de documentos, voc\u00ea deve evitar criar muitos compartimentos. Isso tamb\u00e9m significa que, ao criar um \u00edndice, voc\u00ea estar\u00e1 interessado em criar um \u00edndice para cada tipo: cliente, pe\u00e7as, pedidos etc.  Portanto, a cria\u00e7\u00e3o do \u00edndice incluir\u00e1 uma cl\u00e1usula WHERE para o tipo de documento.<\/p>\n<p>CREATE INDEX ix_customer_zip ON customer(zip) WHERE type = \"customer\";<\/p>\n<p>SELECT * FROM customer WHERE zip = 94040 AND type = \"customer\"<\/p>\n<p>Cada documento do MongoDB cont\u00e9m um campo _id de identifica\u00e7\u00e3o de documento fornecido explicitamente ou gerado implicitamente.<\/p>\n<p>No Couchbase, os usu\u00e1rios devem gerar e inserir uma chave de documento imut\u00e1vel para cada documento.  Ao inserir via N1QL, voc\u00ea pode usar a fun\u00e7\u00e3o UUID() para gerar uma para voc\u00ea.  Por\u00e9m, \u00e9 uma boa pr\u00e1tica ter uma chave de documento <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/data-modelling-key-design\/\">estrutura regular para a chave do documento<\/a>.<\/p>\n<h4><span style=\"color: #0000ff\"><strong>TIPOS DE DADOS<\/strong><\/span><\/h4>\n<p><span style=\"font-weight: 400\">O modelo de dados do MongoDB \u00e9 <\/span><a href=\"https:\/\/www.mongodb.com\/json-and-bson\"><span style=\"font-weight: 400\">BSON<\/span><\/a><span style=\"font-weight: 400\"> e o modelo de dados do Couchbase \u00e9 <\/span><a href=\"https:\/\/www.json.org\/json-en.html\"><span style=\"font-weight: 400\">JSON<\/span><\/a><span style=\"font-weight: 400\">. O tipo propriet\u00e1rio BSON tem alguns tipos que n\u00e3o existem no JSON.   O JSON tem os tipos string, num\u00e9rico, booleano (verdadeiro\/falso), matriz e objeto.  O BSON tem string, num\u00e9rico, booleano, array, objeto, bin\u00e1rio, UTC DateTime, timestamp e muitas outras extens\u00f5es propriet\u00e1rias personalizadas.  No Couchbase, todos os dados relacionados a tempo s\u00e3o armazenados como string no formato ISO 8601.  O N1QL do Couchbase tem uma infinidade de fun\u00e7\u00f5es para extrair, converter e calcular a hora.  Os detalhes completos das fun\u00e7\u00f5es s\u00e3o<\/span><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/dates-timestamps-timezones-comparative-study-oracle-n1ql-support-date-time-feature-part-1\/\"><span style=\"font-weight: 400\"> dispon\u00edvel neste artigo<\/span><\/a><span style=\"font-weight: 400\">.\u00a0<\/span><\/p>\n<div dir=\"ltr\" align=\"left\">\n<table>\n<tbody>\n<tr>\n<td>\n<p dir=\"ltr\"><strong>Tipo de dados<\/strong><\/p>\n<\/td>\n<td>\n<p dir=\"ltr\"><strong>MongoDB<\/strong><\/p>\n<\/td>\n<td>\n<p dir=\"ltr\"><strong>Couchbase<\/strong><\/p>\n<\/td>\n<td>\n<p dir=\"ltr\"><strong>JSON<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p dir=\"ltr\">N\u00fameros<\/p>\n<\/td>\n<td>\n<p dir=\"ltr\">N\u00famero BSON<\/p>\n<\/td>\n<td>\n<p dir=\"ltr\">N\u00famero JSON<\/p>\n<\/td>\n<td>\n<p dir=\"ltr\">{ \"id\": 5, \"balance\":2942.59 }<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p dir=\"ltr\">Cordas<\/p>\n<\/td>\n<td>\n<p dir=\"ltr\">Cadeia de caracteres BSON<\/p>\n<\/td>\n<td>\n<p dir=\"ltr\">Cadeia de caracteres JSON<\/p>\n<\/td>\n<td>\n<p dir=\"ltr\">{\"name\": \"Joe\", \"city\": \"Morrisville\" }<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p dir=\"ltr\">booleano<\/p>\n<\/td>\n<td>\n<p dir=\"ltr\">BSON Booleano<\/p>\n<\/td>\n<td>\n<p dir=\"ltr\">JSON Booleano<\/p>\n<\/td>\n<td>\n<p dir=\"ltr\">{\"premium\": true, \"pending\": false}<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p dir=\"ltr\">data e hora<\/p>\n<\/td>\n<td>\n<p dir=\"ltr\">Formato de dados personalizados<\/p>\n<\/td>\n<td>\n<p dir=\"ltr\">JSON ISO 8901 String com fun\u00e7\u00f5es de extra\u00e7\u00e3o, convers\u00e3o e aritm\u00e9tica<\/p>\n<\/td>\n<td>\n<p dir=\"ltr\">{ \"soldate\": \u201c2017-10-12T13:47:41.068-07:00\u201d }<\/p>\n<p dir=\"ltr\">MongoDB:<\/p>\n<p dir=\"ltr\">{ \"soldate\": ISODate(\u201c2012-12-19T06:01:17.171Z\u201d)}<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p dir=\"ltr\">dados espaciais<\/p>\n<\/td>\n<td>\n<p dir=\"ltr\">GeoJSON<\/p>\n<\/td>\n<td>\n<p dir=\"ltr\">Oferece suporte ao vizinho mais pr\u00f3ximo e \u00e0 dist\u00e2ncia espacial.<\/p>\n<\/td>\n<td>\n<p dir=\"ltr\">\"geometria\": {\"type\": \"Point\", \"coordinates\": [-104.99404, 39.75621]}<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p dir=\"ltr\">FALTANDO<\/p>\n<\/td>\n<td>\n<p dir=\"ltr\">Sem suporte<\/p>\n<\/td>\n<td>\n<p dir=\"ltr\">FALTANDO<\/p>\n<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>\n<p dir=\"ltr\">NULL<\/p>\n<\/td>\n<td>\n<p dir=\"ltr\">JSON Nulo<\/p>\n<\/td>\n<td>\n<p dir=\"ltr\">JSON nulo<\/p>\n<\/td>\n<td>\n<p dir=\"ltr\">{\"last_address\": null }<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p dir=\"ltr\">Objetos<\/p>\n<\/td>\n<td>\n<p dir=\"ltr\">Objetos JSON flex\u00edveis<\/p>\n<\/td>\n<td>\n<p dir=\"ltr\">Objetos JSON flex\u00edveis<\/p>\n<\/td>\n<td>\n<p dir=\"ltr\">{\"address\" (endere\u00e7o):  {\"street\": \"1, Main street\", \"city\": Morrisville, \"zip\": \"94824\u2033}}<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p dir=\"ltr\">Matrizes<\/p>\n<\/td>\n<td>\n<p dir=\"ltr\">Matrizes JSON flex\u00edveis<\/p>\n<\/td>\n<td>\n<p dir=\"ltr\">Matrizes JSON flex\u00edveis<\/p>\n<\/td>\n<td>\n<p dir=\"ltr\">{ \"hobbies\": [\"tennis\", \"skiing\", \"lego\"]}<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p><b>TUDO SOBRE A FALTA<\/b><\/p>\n<p><span style=\"font-weight: 400\">MISSING \u00e9 o valor de um campo ausente no documento ou literal JSON.<\/span><\/p>\n<p><span style=\"font-weight: 400\">{\"name\": \"joe\"}  Tudo, exceto o campo \"name\", est\u00e1 faltando no documento.  Voc\u00ea tamb\u00e9m pode definir o valor de um campo como MISSING para fazer com que o campo desapare\u00e7a. Os bancos de dados relacionais tradicionais usam <\/span><a href=\"https:\/\/en.wikipedia.org\/wiki\/Three-valued_logic\"><span style=\"font-weight: 400\">l\u00f3gica de tr\u00eas valores<\/span><\/a><span style=\"font-weight: 400\"> com true, false e NULL.  Com a adi\u00e7\u00e3o de MISSING, o N1QL<\/span><a href=\"https:\/\/docs.couchbase.com\/server\/4.0\/n1ql\/n1ql-language-reference\/booleanlogic.html\"><span style=\"font-weight: 400\"> usa l\u00f3gica de 4 valores<\/span><\/a><span style=\"font-weight: 400\">.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">Voc\u00ea tem as seguintes express\u00f5es com MISSING.\u00a0\u00a0<\/span><\/p>\n<div dir=\"ltr\" align=\"left\">\n<table>\n<tbody>\n<tr>\n<td>\n<p dir=\"ltr\">EST\u00c1 FALTANDO<\/p>\n<\/td>\n<td>\n<p dir=\"ltr\">Retorna true se o documento n\u00e3o tiver um campo de status<\/p>\n<p dir=\"ltr\">FROM CUSTOMER WHERE status is MISSING;<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p dir=\"ltr\">N\u00c3O EST\u00c1 FALTANDO<\/p>\n<\/td>\n<td>\n<p dir=\"ltr\">Retorna true se o documento tiver um campo de status<\/p>\n<p dir=\"ltr\">FROM CUSTOMER WHERE status is NOT MISSING;<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p dir=\"ltr\">AUSENTE E NULO<\/p>\n<\/td>\n<td>\n<p dir=\"ltr\">MISSING \u00e9 uma quantidade ausente conhecida<\/p>\n<p dir=\"ltr\">null \u00e9 um UNKNOWN conhecido. Voc\u00ea pode verificar se h\u00e1 um valor nulo semelhante a MISSING com a express\u00e3o IS NULL ou IS NOT NULL.<\/p>\n<p dir=\"ltr\">JSON v\u00e1lido: {\"status\": null}<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p dir=\"ltr\">Valor ausente<\/p>\n<\/td>\n<td>\n<p dir=\"ltr\">Basta fazer com que o campo de qualquer tipo desapare\u00e7a, definindo-o como MISSING<\/p>\n<p dir=\"ltr\">UPDATE CUSTOMER SET status = MISSING WHERE cxid = \"xyz232\"<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h4><span style=\"color: #0000ff\"><b>MODELAGEM DE DADOS<\/b><\/span><\/h4>\n<table>\n<tbody>\n<tr>\n<td><b>Relacionamento<\/b><\/td>\n<td><b>MongoDB<\/b><\/td>\n<td><b>Couchbase\u00a0<\/b><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">1:1<\/span><\/td>\n<td>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Objeto incorporado (impl\u00edcito)<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Refer\u00eancia da chave do documento<\/span><\/li>\n<\/ul>\n<\/td>\n<td>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Objeto incorporado (impl\u00edcito)<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Refer\u00eancia da chave do documento<\/span><\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">1:N<\/span><\/td>\n<td>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Matriz de objetos incorporada<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Chave do documento Refer\u00eancia<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Consulta com o operador $lookup<\/span><\/li>\n<\/ul>\n<\/td>\n<td>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Matriz de objetos incorporada<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Chave do documento Refer\u00eancia<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Consulta com uni\u00f5es INNER, LEFT OUTER, RIGHT OUTER, NEST, UNNEST<\/span><\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">N:M<\/span><\/td>\n<td>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Matriz de objetos incorporada<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Matrizes de objetos com refer\u00eancias<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Dif\u00edcil de consultar com o operador $lookup<\/span><\/li>\n<\/ul>\n<\/td>\n<td>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Matriz de objetos incorporada<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Matrizes de objetos com refer\u00eancias<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Consulta com uni\u00f5es INNER, LEFT OUTER, RIGHT OUTER, NEST, UNNEST<\/span><\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><b>GERENCIAMENTO DE ESPA\u00c7O F\u00cdSICO<\/b><\/p>\n<table>\n<tbody>\n<tr>\n<td><b>Tipo de \u00edndice<\/b><\/td>\n<td><b>MongoDB<\/b><\/td>\n<td><b>Couchbase\u00a0<\/b><\/td>\n<\/tr>\n<tr>\n<td><b>Armazenamento de mesa<\/b><\/td>\n<td><span style=\"font-weight: 400\">Diret\u00f3rio do sistema de arquivos<\/span><\/td>\n<td><span style=\"font-weight: 400\">Diret\u00f3rio do sistema de arquivos<\/span><\/td>\n<\/tr>\n<tr>\n<td><b>Armazenamento de \u00edndices<\/b><\/td>\n<td><span style=\"font-weight: 400\">Diret\u00f3rio do sistema de arquivos<\/span><\/td>\n<td><span style=\"font-weight: 400\">Diret\u00f3rio do sistema de arquivos<\/span><\/td>\n<\/tr>\n<tr>\n<td><b>Particionamento - Dados<\/b><\/td>\n<td><span style=\"font-weight: 400\">H\u00e1 suporte para fragmenta\u00e7\u00e3o por intervalo e hash.<\/span><\/td>\n<td><span style=\"font-weight: 400\">Particionamento de hash<\/span><\/p>\n<p><span style=\"font-weight: 400\">Armazenado em 1024 vbuckets<\/span><\/td>\n<\/tr>\n<tr>\n<td><b>Particionamento - \u00cdndice<\/b><\/td>\n<td><span style=\"font-weight: 400\">Vinculado \u00e0 estrat\u00e9gia de fragmenta\u00e7\u00e3o da cole\u00e7\u00e3o, pois todos os (sub)\u00edndices s\u00e3o locais para cada n\u00f3 mongod.<\/span><\/td>\n<td><span style=\"font-weight: 400\">Sempre separado do Bucket<\/span><\/p>\n<p><span style=\"font-weight: 400\">\u00cdndice global (pode usar uma estrat\u00e9gia diferente da do bloco\/cole\u00e7\u00e3o)<\/span><\/p>\n<p><span style=\"font-weight: 400\">Oferece suporte ao particionamento de hash dos \u00edndices.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Particionamento de intervalo, a indexa\u00e7\u00e3o parcial \u00e9 manual por meio de \u00edndices parciais.<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4><span style=\"color: #0000ff\"><strong>SDKs<\/strong><\/span><\/h4>\n<p>Meu conhecimento pessoal dos dois SDKs \u00e9 limitado.  Deve haver APIs, drivers e conectores equivalentes nos dois produtos.  Caso contr\u00e1rio, informe-nos.<\/p>\n<table>\n<tbody>\n<tr>\n<td><b>SDK<\/b><\/td>\n<td><b>MongoDB<\/b><\/td>\n<td><b>Couchbase\u00a0<\/b><\/td>\n<\/tr>\n<tr>\n<td><b>Java<\/b><\/td>\n<td><b>Driver java do MongoDB<\/b><\/td>\n<td><b>SDK Java do Couchbase,\u00a0<\/b><\/p>\n<p><b>Simba e CDATA JDBC<\/b><\/td>\n<\/tr>\n<tr>\n<td><b>C<\/b><\/td>\n<td><b>Driver C do MongoDB<\/b><\/p>\n<p><b>Driver ODBC<\/b><\/td>\n<td><b>Couchbase C SDK,<\/b><\/p>\n<p><b>Simba e CDATA ODBC<\/b><\/td>\n<\/tr>\n<tr>\n<td><b>.NET, LINQ<\/b><\/td>\n<td><b>Provedor Mongodb .NET.<\/b><\/td>\n<td><b>Provedor do Couchbase .NET<\/b><\/p>\n<p><b>Provedor LINQ<\/b><\/td>\n<\/tr>\n<tr>\n<td><b>PHP, Python, Perl, Node.js<\/b><\/td>\n<td><b>SDK do MongoDB em todos esses idiomas<\/b><\/td>\n<td><b>SDK do Couchbase em todos esses idiomas<\/b><\/td>\n<\/tr>\n<tr>\n<td><b>golang<\/b><\/td>\n<td><b>Mongodb go sdk<\/b><\/td>\n<td><b>SDK do Couchbase Go<\/b><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4><strong><span style=\"color: #0000ff\">LINGUAGEM DE CONSULTA<\/span><\/strong><\/h4>\n<p><strong>SELECIONAR:\u00a0 \u00a0<\/strong>O Mongo tem v\u00e1rias APIs para selecionar os documentos. find() e aggregate() podem fazer o trabalho de instru\u00e7\u00f5es SELECT simples. Veremos o aggregate() mais adiante nesta se\u00e7\u00e3o.<\/p>\n<pre class=\"theme:vs2012-black font-size:17 line-height:20 whitespace-before:1 whitespace-after:1 lang:mysql decode:true\">\/* MongoDB *\/\r\ndb.CUSTOMER.find({zip:94040})\r\n\r\n\/* Couchbase: N1QL *\/\r\nSELECT * FROM CUSTOMER WHERE zip = 94040;<\/pre>\n<p><strong>INSERIR<\/strong><\/p>\n<p>No MongoDB, fornecer _id \u00e9 opcional.  Se voc\u00ea n\u00e3o fornecer seu valor, o Mongo gerar\u00e1 o valor do campo e o salvar\u00e1.  O fornecimento de document KEY \u00e9 obrigat\u00f3rio no Couchbase.<\/p>\n<pre class=\"theme:vs2012-black font-size:17 line-height:20 whitespace-before:2 lang:mysql decode:true\">\/* MongoDB *\/\r\ndb.CUSTOMER.save({_id: \"xyz124\", \r\n{\u201cid\u201d: \u201cxyz124\u201d, \u201cname\u201d: \u201cJoe Montana\u201d, \u201cstatus\u201d: \u201cPremium\u201d, \u201czip\u201d: 94040})\r\n\r\n\/* Couchbase:N1QL *\/\r\nINSERT INTO CUSTOMER(KEY, VALUE) VALUES\r\n(\u2018xyz124\u2019, {\u201cid\u201d: \u201cxyz124\u201d, \u201cname\u201d: \u201cJoe Montana\u201d, \u201cstatus\u201d: \u201cPremium\u201d, \u201czip\u201d: 94040})\r\n<\/pre>\n<p><strong>ATUALIZA\u00c7\u00c3O<\/strong><\/p>\n<pre class=\"theme:vs2012-black font-size:17 line-height:20 whitespace-before:2 lang:mysql decode:true\">\/* MongoDB *\/\r\ndb.CUSTOMER.update({_id:\u201dxyz124\u2019},{zip:94587})\r\n\r\n\/* Coudhbase:N1QL *\/\r\nUPDATE CUSTOMER SET zip = 94587 WHERE id = \u2018xyz124\u2019\r\n<\/pre>\n<p><strong>DELETE<\/strong><\/p>\n<pre class=\"theme:vs2012-black font-size:17 line-height:20 whitespace-before:2 lang:mysql decode:true\">\/* MongoDB *\/\r\ndb.CUSTOMER.remove({_id:\u2018pqr482\u2019})\r\n\r\n\/* Couchbase:N1QL.  One of the statements will do for this data\/schema. *\/\r\nDELETE FROM CUSTOMER WHERE id = \u2018pqr482\u2019;\r\nDELETE FROM CUSTOMER WHERE META().id = \u2018pqr482\u2019;\r\n<\/pre>\n<p><strong><a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-language-reference\/merge.html\">MERGE<\/a>:\u00a0<\/strong>A opera\u00e7\u00e3o MERGE em um conjunto de documentos JSON \u00e9 frequentemente necess\u00e1ria como parte de seu processo de ETL ou de atualiza\u00e7\u00f5es di\u00e1rias.  A instru\u00e7\u00e3o MERGE pode envolver fontes de dados complexas com predicados complexos baseados em regras de neg\u00f3cios.  O Couchbase fornece a opera\u00e7\u00e3o MERGE padr\u00e3o com a mesma sem\u00e2ntica.  No MongoDB, era necess\u00e1rio escrever um longo programa para fazer isso, mas algumas das regras de opera\u00e7\u00e3o definidas (por exemplo, cada documento deve ser atualizado APENAS uma vez) s\u00e3o dif\u00edceis de aplicar em um aplicativo.  No Couchbase, voc\u00ea pode simplesmente usar a fun\u00e7\u00e3o <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/ansi-join-enhancements-and-ansi-merge\/\">Declara\u00e7\u00e3o MERGE<\/a>como o RDBMS.<\/p>\n<pre class=\"theme:vs2012-black font-size:17 line-height:20 whitespace-before:2 lang:default decode:true\">\/* MongoDB *\/\r\nUnavailable.  Need to work around using aggregate(), custom-logic program, and update().\r\n\r\n\/* Couchbase:N1QL Second statement is ANSI SQL Compliant*\/\r\nMERGE INTO CUSTOMER \r\n      USING (SELECT id FROM CN WHERE x &lt; 10) AS CN \r\n            ON KEY CN.id  WHEN MATCHED THEN \r\n                  UPDATE SET CUSTOMER.o4=1;\r\n\r\nMERGE INTO CUSTOMER \r\n      USING (SELECT id FROM CN WHERE x &lt; 10) AS CN \r\n            ON (CN.id = META(CUSTOKMER).id) WHEN MATCHED THEN \r\n                  UPDATE SET CUSTOMER.o4=1;<\/pre>\n<p><strong>DESCREVER:<\/strong><\/p>\n<p>Os dados JSON s\u00e3o autodescritivos e flex\u00edveis. O auxiliar de esquema do MongoDB est\u00e1 dispon\u00edvel via <a href=\"https:\/\/docs.mongodb.com\/compass\/current\/schema\/\">Visualiza\u00e7\u00e3o da b\u00fassola<\/a> somente na Enterprise Edition.<\/p>\n<p>O Couchbase tem o INFER para analisar e entender o esquema. Tanto o servi\u00e7o de consulta quanto o servi\u00e7o anal\u00edtico podem inferir o esquema.<\/p>\n<ol>\n<li style=\"list-style-type: none\">\n<ol>\n<li>Servi\u00e7o de consulta <a href=\"https:\/\/docs.couchbase.com\/server\/6.5\/n1ql\/n1ql-language-reference\/infer.html\">Comando INFER<\/a><\/li>\n<li>O Analytics Service tem <a href=\"https:\/\/docs.couchbase.com\/server\/current\/analytics\/8_builtin.html\">array_infer_schema()<\/a> fun\u00e7\u00e3o.<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/04\/Screen-Shot-2020-04-24-at-4.25.44-PM.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-8500\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/04\/Screen-Shot-2020-04-24-at-4.25.44-PM-300x209.png\" alt=\"\" width=\"653\" height=\"456\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-24-at-4.25.44-PM-300x209.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-24-at-4.25.44-PM-1024x713.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-24-at-4.25.44-PM-768x535.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-24-at-4.25.44-PM-1536x1070.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-24-at-4.25.44-PM-20x14.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-24-at-4.25.44-PM-1320x919.png 1320w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-24-at-4.25.44-PM.png 1956w\" sizes=\"auto, (max-width: 653px) 100vw, 653px\" \/><\/a><\/p>\n<p>Aqui est\u00e1 o exemplo de sa\u00edda do INFER.<\/p>\n<pre class=\"theme:vs2012-black font-size:17 line-height:20 height-set:true whitespace-before:2 lang:js decode:true\">INFER `travel-sample`;\r\n\r\n{\r\n    \"requestID\": \"59c444b1-a468-486b-aac3-949be1ddaed1\",\r\n    \"clientContextID\": \"634e367b-ac7c-4815-90da-1506d6902d78\",\r\n    \"signature\": null,\r\n    \"results\": [\r\n    [\r\n        {\r\n            \"#docs\": 816,\r\n            \"$schema\": \"https:\/\/json-schema.org\/draft-06\/schema\",\r\n            \"Flavor\": \"`stops` = 0, `type` = \\\"route\\\"\",\r\n            \"properties\": {\r\n                \"airline\": {\r\n                    \"#docs\": 816,\r\n                    \"%docs\": 100,\r\n                    \"samples\": [\r\n                        \"9K\",\r\n                        \"DL\",\r\n                        \"KL\",\r\n                        \"US\",\r\n                        \"WN\"\r\n                    ],\r\n                    \"type\": \"string\"\r\n                },\r\n                \"airlineid\": {\r\n                    \"#docs\": 816,\r\n                    \"%docs\": 100,\r\n                    \"samples\": [\r\n                        \"airline_1629\",\r\n                        \"airline_2009\",\r\n                        \"airline_3090\",\r\n                        \"airline_4547\",\r\n                        \"airline_5265\"\r\n                    ],\r\n                    \"type\": \"string\"\r\n                },\r\n                \"destinationairport\": {\r\n                    \"#docs\": 816,\r\n                    \"%docs\": 100,\r\n                    \"samples\": [\r\n                        \"ACK\",\r\n                        \"ATL\",\r\n                        \"BWI\",\r\n                        \"CMH\",\r\n                        \"MAN\"\r\n                    ],\r\n                    \"type\": \"string\"\r\n                },\r\n                \"distance\": {\r\n                    \"#docs\": 816,\r\n                    \"%docs\": 100,\r\n                    \"samples\": [\r\n                        49.792009674515775,\r\n                        335.34343397923425,\r\n                        775.5437991859698,\r\n                        2524.506189235734,\r\n                        6139.9648921034795\r\n                    ],\r\n                    \"type\": \"number\"\r\n                },\r\n                \"equipment\": {\r\n                    \"#docs\": [\r\n                        1,\r\n                        815\r\n                    ],\r\n                    \"%docs\": [\r\n                        0.12,\r\n                        99.87\r\n                    ],\r\n                    \"samples\": [\r\n                        [\r\n                            null\r\n                        ],\r\n                        [\r\n                            \"73W 738\",\r\n                            \"763\",\r\n                            \"CNA\",\r\n                            \"CRJ\",\r\n                            \"ERJ CRJ\"\r\n                        ]\r\n                    ],\r\n                    \"type\": [\r\n                        \"null\",\r\n                        \"string\"\r\n                    ]\r\n                },\r\n                \"id\": {\r\n                    \"#docs\": 816,\r\n                    \"%docs\": 100,\r\n                    \"samples\": [\r\n                        3645,\r\n                        20935,\r\n                        36958,\r\n                        59930,\r\n                        64450\r\n                    ],\r\n                    \"type\": \"number\"\r\n                },\r\n                \"schedule\": {\r\n                    \"#docs\": 816,\r\n                    \"%docs\": 100,\r\n                    \"items\": {\r\n                        \"#docs\": 17124,\r\n                        \"$schema\": \"https:\/\/json-schema.org\/draft-06\/schema\",\r\n                        \"properties\": {\r\n                            \"day\": {\r\n                                \"type\": \"number\"\r\n                            },\r\n                            \"flight\": {\r\n                                \"type\": \"string\"\r\n                            },\r\n                            \"utc\": {\r\n                                \"type\": \"string\"\r\n                            }\r\n                        },\r\n                        \"type\": \"object\"\r\n                    },\r\n                    \"maxItems\": 31,\r\n                    \"minItems\": 10,\r\n                    \"samples\": [\r\n                        [\r\n                            {\r\n                                \"day\": 0,\r\n                                \"flight\": \"9K006\",\r\n                                \"utc\": \"19:36:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 0,\r\n                                \"flight\": \"9K802\",\r\n                                \"utc\": \"22:34:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 0,\r\n                                \"flight\": \"9K210\",\r\n                                \"utc\": \"20:08:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 0,\r\n                                \"flight\": \"9K316\",\r\n                                \"utc\": \"01:02:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 1,\r\n                                \"flight\": \"9K408\",\r\n                                \"utc\": \"05:50:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 1,\r\n                                \"flight\": \"9K452\",\r\n                                \"utc\": \"12:34:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 1,\r\n                                \"flight\": \"9K799\",\r\n                                \"utc\": \"04:36:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 2,\r\n                                \"flight\": \"9K157\",\r\n                                \"utc\": \"19:35:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 2,\r\n                                \"flight\": \"9K923\",\r\n                                \"utc\": \"01:09:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 3,\r\n                                \"flight\": \"9K201\",\r\n                                \"utc\": \"09:24:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 4,\r\n                                \"flight\": \"9K355\",\r\n                                \"utc\": \"04:29:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 4,\r\n                                \"flight\": \"9K845\",\r\n                                \"utc\": \"12:24:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 4,\r\n                                \"flight\": \"9K515\",\r\n                                \"utc\": \"17:56:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 4,\r\n                                \"flight\": \"9K472\",\r\n                                \"utc\": \"11:16:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 4,\r\n                                \"flight\": \"9K506\",\r\n                                \"utc\": \"04:17:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 5,\r\n                                \"flight\": \"9K040\",\r\n                                \"utc\": \"20:32:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 5,\r\n                                \"flight\": \"9K273\",\r\n                                \"utc\": \"04:29:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 5,\r\n                                \"flight\": \"9K131\",\r\n                                \"utc\": \"22:14:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 5,\r\n                                \"flight\": \"9K494\",\r\n                                \"utc\": \"18:54:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 6,\r\n                                \"flight\": \"9K037\",\r\n                                \"utc\": \"21:13:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 6,\r\n                                \"flight\": \"9K786\",\r\n                                \"utc\": \"16:07:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 6,\r\n                                \"flight\": \"9K724\",\r\n                                \"utc\": \"15:53:00\"\r\n                            }\r\n                        ],\r\n                        [\r\n                            {\r\n                                \"day\": 0,\r\n                                \"flight\": \"DL113\",\r\n                                \"utc\": \"15:48:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 0,\r\n                                \"flight\": \"DL864\",\r\n                                \"utc\": \"09:13:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 1,\r\n                                \"flight\": \"DL880\",\r\n                                \"utc\": \"23:27:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 2,\r\n                                \"flight\": \"DL399\",\r\n                                \"utc\": \"06:42:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 2,\r\n                                \"flight\": \"DL705\",\r\n                                \"utc\": \"15:54:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 2,\r\n                                \"flight\": \"DL630\",\r\n                                \"utc\": \"21:52:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 3,\r\n                                \"flight\": \"DL570\",\r\n                                \"utc\": \"00:02:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 4,\r\n                                \"flight\": \"DL702\",\r\n                                \"utc\": \"18:46:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 4,\r\n                                \"flight\": \"DL668\",\r\n                                \"utc\": \"20:09:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 4,\r\n                                \"flight\": \"DL214\",\r\n                                \"utc\": \"10:27:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 4,\r\n                                \"flight\": \"DL748\",\r\n                                \"utc\": \"13:36:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 5,\r\n                                \"flight\": \"DL935\",\r\n                                \"utc\": \"20:48:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 6,\r\n                                \"flight\": \"DL074\",\r\n                                \"utc\": \"19:27:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 6,\r\n                                \"flight\": \"DL618\",\r\n                                \"utc\": \"10:54:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 6,\r\n                                \"flight\": \"DL983\",\r\n                                \"utc\": \"19:41:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 6,\r\n                                \"flight\": \"DL951\",\r\n                                \"utc\": \"17:45:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 6,\r\n                                \"flight\": \"DL546\",\r\n                                \"utc\": \"12:19:00\"\r\n                            }\r\n                        ],\r\n                        [\r\n                            {\r\n                                \"day\": 0,\r\n                                \"flight\": \"KL362\",\r\n                                \"utc\": \"22:09:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 0,\r\n                                \"flight\": \"KL430\",\r\n                                \"utc\": \"10:39:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 0,\r\n                                \"flight\": \"KL249\",\r\n                                \"utc\": \"18:12:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 1,\r\n                                \"flight\": \"KL670\",\r\n                                \"utc\": \"16:10:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 1,\r\n                                \"flight\": \"KL164\",\r\n                                \"utc\": \"00:58:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 2,\r\n                                \"flight\": \"KL015\",\r\n                                \"utc\": \"16:29:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 3,\r\n                                \"flight\": \"KL731\",\r\n                                \"utc\": \"17:12:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 4,\r\n                                \"flight\": \"KL047\",\r\n                                \"utc\": \"14:58:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 4,\r\n                                \"flight\": \"KL854\",\r\n                                \"utc\": \"08:41:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 4,\r\n                                \"flight\": \"KL173\",\r\n                                \"utc\": \"21:20:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 5,\r\n                                \"flight\": \"KL006\",\r\n                                \"utc\": \"19:12:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 5,\r\n                                \"flight\": \"KL886\",\r\n                                \"utc\": \"21:32:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 6,\r\n                                \"flight\": \"KL448\",\r\n                                \"utc\": \"22:24:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 6,\r\n                                \"flight\": \"KL286\",\r\n                                \"utc\": \"14:05:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 6,\r\n                                \"flight\": \"KL170\",\r\n                                \"utc\": \"03:36:00\"\r\n                            }\r\n                        ],\r\n                        [\r\n                            {\r\n                                \"day\": 0,\r\n                                \"flight\": \"US931\",\r\n                                \"utc\": \"19:24:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 0,\r\n                                \"flight\": \"US257\",\r\n                                \"utc\": \"20:54:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 1,\r\n                                \"flight\": \"US375\",\r\n                                \"utc\": \"08:22:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 1,\r\n                                \"flight\": \"US674\",\r\n                                \"utc\": \"20:41:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 1,\r\n                                \"flight\": \"US866\",\r\n                                \"utc\": \"03:58:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 1,\r\n                                \"flight\": \"US142\",\r\n                                \"utc\": \"16:05:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 2,\r\n                                \"flight\": \"US572\",\r\n                                \"utc\": \"19:33:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 2,\r\n                                \"flight\": \"US270\",\r\n                                \"utc\": \"12:58:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 2,\r\n                                \"flight\": \"US151\",\r\n                                \"utc\": \"07:46:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 3,\r\n                                \"flight\": \"US513\",\r\n                                \"utc\": \"13:58:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 3,\r\n                                \"flight\": \"US410\",\r\n                                \"utc\": \"00:44:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 3,\r\n                                \"flight\": \"US262\",\r\n                                \"utc\": \"14:52:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 3,\r\n                                \"flight\": \"US962\",\r\n                                \"utc\": \"05:32:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 3,\r\n                                \"flight\": \"US527\",\r\n                                \"utc\": \"17:42:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 4,\r\n                                \"flight\": \"US068\",\r\n                                \"utc\": \"04:14:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 4,\r\n                                \"flight\": \"US448\",\r\n                                \"utc\": \"09:39:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 4,\r\n                                \"flight\": \"US914\",\r\n                                \"utc\": \"07:16:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 4,\r\n                                \"flight\": \"US090\",\r\n                                \"utc\": \"06:06:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 4,\r\n                                \"flight\": \"US514\",\r\n                                \"utc\": \"14:38:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 5,\r\n                                \"flight\": \"US817\",\r\n                                \"utc\": \"09:41:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 5,\r\n                                \"flight\": \"US665\",\r\n                                \"utc\": \"03:49:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 6,\r\n                                \"flight\": \"US740\",\r\n                                \"utc\": \"07:27:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 6,\r\n                                \"flight\": \"US803\",\r\n                                \"utc\": \"18:37:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 6,\r\n                                \"flight\": \"US300\",\r\n                                \"utc\": \"09:08:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 6,\r\n                                \"flight\": \"US496\",\r\n                                \"utc\": \"07:05:00\"\r\n                            }\r\n                        ],\r\n                        [\r\n                            {\r\n                                \"day\": 0,\r\n                                \"flight\": \"WN044\",\r\n                                \"utc\": \"13:39:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 0,\r\n                                \"flight\": \"WN799\",\r\n                                \"utc\": \"07:15:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 0,\r\n                                \"flight\": \"WN792\",\r\n                                \"utc\": \"09:16:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 1,\r\n                                \"flight\": \"WN030\",\r\n                                \"utc\": \"09:51:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 1,\r\n                                \"flight\": \"WN377\",\r\n                                \"utc\": \"03:41:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 2,\r\n                                \"flight\": \"WN081\",\r\n                                \"utc\": \"01:53:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 2,\r\n                                \"flight\": \"WN413\",\r\n                                \"utc\": \"04:49:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 2,\r\n                                \"flight\": \"WN132\",\r\n                                \"utc\": \"16:06:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 2,\r\n                                \"flight\": \"WN882\",\r\n                                \"utc\": \"21:16:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 2,\r\n                                \"flight\": \"WN773\",\r\n                                \"utc\": \"04:55:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 3,\r\n                                \"flight\": \"WN286\",\r\n                                \"utc\": \"04:17:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 3,\r\n                                \"flight\": \"WN295\",\r\n                                \"utc\": \"04:35:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 4,\r\n                                \"flight\": \"WN932\",\r\n                                \"utc\": \"16:34:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 4,\r\n                                \"flight\": \"WN315\",\r\n                                \"utc\": \"00:35:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 4,\r\n                                \"flight\": \"WN016\",\r\n                                \"utc\": \"09:10:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 4,\r\n                                \"flight\": \"WN509\",\r\n                                \"utc\": \"22:28:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 5,\r\n                                \"flight\": \"WN090\",\r\n                                \"utc\": \"13:46:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 6,\r\n                                \"flight\": \"WN456\",\r\n                                \"utc\": \"04:05:00\"\r\n                            },\r\n                            {\r\n                                \"day\": 6,\r\n                                \"flight\": \"WN111\",\r\n                                \"utc\": \"05:10:00\"\r\n                            }\r\n                        ]\r\n                    ],\r\n                    \"type\": \"array\"\r\n                },\r\n                \"sourceairport\": {\r\n                    \"#docs\": 816,\r\n                    \"%docs\": 100,\r\n                    \"samples\": [\r\n                        \"HYA\",\r\n                        \"JFK\",\r\n                        \"ORD\",\r\n                        \"SJU\",\r\n                        \"VLD\"\r\n                    ],\r\n                    \"type\": \"string\"\r\n                },\r\n                \"stops\": {\r\n                    \"#docs\": 816,\r\n                    \"%docs\": 100,\r\n                    \"samples\": [\r\n                        0\r\n                    ],\r\n                    \"type\": \"number\"\r\n                },\r\n                \"type\": {\r\n                    \"#docs\": 816,\r\n                    \"%docs\": 100,\r\n                    \"samples\": [\r\n                        \"route\"\r\n                    ],\r\n                    \"type\": \"string\"\r\n                }\r\n            },\r\n            \"type\": \"object\"\r\n        },\r\n        {\r\n            \"#docs\": 109,\r\n            \"$schema\": \"https:\/\/json-schema.org\/draft-06\/schema\",\r\n            \"Flavor\": \"`type` = \\\"landmark\\\"\",\r\n            \"properties\": {\r\n                \"activity\": {\r\n                    \"#docs\": 109,\r\n                    \"%docs\": 100,\r\n                    \"samples\": [\r\n                        \"buy\",\r\n                        \"do\",\r\n                        \"drink\",\r\n                        \"eat\",\r\n                        \"see\"\r\n                    ],\r\n                    \"type\": \"string\"\r\n                },\r\n                \"address\": {\r\n                    \"#docs\": [\r\n                        106,\r\n                        3\r\n                    ],\r\n                    \"%docs\": [\r\n                        97.24,\r\n                        2.75\r\n                    ],\r\n                    \"samples\": [\r\n                        [\r\n                            null\r\n                        ],\r\n                        [\r\n                            \"310 Uxbridge Rd, W12 7LJ\",\r\n                            \"Craven Cottage, Stevenage Rd, ...\",\r\n                            \"Warwick Road, SW5 9TA\"\r\n                        ]\r\n                    ],\r\n                    \"type\": [\r\n                        \"null\",\r\n                        \"string\"\r\n                    ]\r\n                },\r\n                \"alt\": {\r\n                    \"#docs\": [\r\n                        108,\r\n                        1\r\n                    ],\r\n                    \"%docs\": [\r\n                        99.08,\r\n                        0.91\r\n                    ],\r\n                    \"samples\": [\r\n                        [\r\n                            null\r\n                        ],\r\n                        [\r\n                            \"previously Shanghai Red's\"\r\n                        ]\r\n                    ],\r\n                    \"type\": [\r\n                        \"null\",\r\n                        \"string\"\r\n                    ]\r\n                },\r\n                \"city\": {\r\n                    \"#docs\": 109,\r\n                    \"%docs\": 100,\r\n                    \"samples\": [\r\n                        \"Carpentras\",\r\n                        \"Llanddona\",\r\n                        \"Llangrannog\",\r\n                        \"London\",\r\n                        \"Los Angeles\"\r\n                    ],\r\n                    \"type\": \"string\"\r\n                },\r\n                \"content\": {\r\n                    \"#docs\": 109,\r\n                    \"%docs\": 100,\r\n                    \"samples\": [\r\n                        \"Hosts frequent conventions, ex...\",\r\n                        \"Originally a dance hall, this ...\",\r\n                        \"The Hollywood Wax Museum is th...\",\r\n                        \"The home of Premier League foo...\",\r\n                        \"several annual horse racing, b...\"\r\n                    ],\r\n                    \"type\": \"string\"\r\n                },\r\n                \"country\": {\r\n                    \"#docs\": 109,\r\n                    \"%docs\": 100,\r\n                    \"samples\": [\r\n                        \"France\",\r\n                        \"United Kingdom\",\r\n                        \"United States\"\r\n                    ],\r\n                    \"type\": \"string\"\r\n                },\r\n                \"directions\": {\r\n                    \"#docs\": [\r\n                        106,\r\n                        3\r\n                    ],\r\n                    \"%docs\": [\r\n                        97.24,\r\n                        2.75\r\n                    ],\r\n                    \"samples\": [\r\n                        [\r\n                            null\r\n                        ],\r\n                        [\r\n                            \"about 10 min walk from both Pu...\",\r\n                            \"tube: Earl's Court or West Bro...\",\r\n                            \"tube: Shepherd's Bush Market\"\r\n                        ]\r\n                    ],\r\n                    \"type\": [\r\n                        \"null\",\r\n                        \"string\"\r\n                    ]\r\n                },\r\n                \"email\": {\r\n                    \"#docs\": [\r\n                        106,\r\n                        3\r\n                    ],\r\n                    \"%docs\": [\r\n                        97.24,\r\n                        2.75\r\n                    ],\r\n                    \"samples\": [\r\n                        [\r\n                            null\r\n                        ],\r\n                        [\r\n                            \"enquiries@fulhamfc.com\",\r\n                            \"info@eco.co.uk\",\r\n                            \"notes@bushhallmusic.co.uk\"\r\n                        ]\r\n                    ],\r\n                    \"type\": [\r\n                        \"null\",\r\n                        \"string\"\r\n                    ]\r\n                },\r\n                \"geo\": {\r\n                    \"#docs\": 109,\r\n                    \"%docs\": 100,\r\n                    \"properties\": {\r\n                        \"accuracy\": {\r\n                            \"#docs\": 109,\r\n                            \"%docs\": 100,\r\n                            \"samples\": [\r\n                                \"APPROXIMATE\",\r\n                                \"RANGE_INTERPOLATED\",\r\n                                \"ROOFTOP\"\r\n                            ],\r\n                            \"type\": \"string\"\r\n                        },\r\n                        \"lat\": {\r\n                            \"#docs\": 109,\r\n                            \"%docs\": 100,\r\n                            \"samples\": [\r\n                                34.101757,\r\n                                44.037882130818225,\r\n                                51.4749,\r\n                                51.4888,\r\n                                51.5064\r\n                            ],\r\n                            \"type\": \"number\"\r\n                        },\r\n                        \"lon\": {\r\n                            \"#docs\": 109,\r\n                            \"%docs\": 100,\r\n                            \"samples\": [\r\n                                -118.338056,\r\n                                -0.2317,\r\n                                -0.2216,\r\n                                -0.1977,\r\n                                5.064881989019341\r\n                            ],\r\n                            \"type\": \"number\"\r\n                        }\r\n                    },\r\n                    \"samples\": [\r\n                        {\r\n                            \"accuracy\": \"APPROXIMATE\",\r\n                            \"lat\": 51.4749,\r\n                            \"lon\": -0.2216\r\n                        },\r\n                        {\r\n                            \"accuracy\": \"RANGE_INTERPOLATED\",\r\n                            \"lat\": 34.101757,\r\n                            \"lon\": -118.338056\r\n                        },\r\n                        {\r\n                            \"accuracy\": \"RANGE_INTERPOLATED\",\r\n                            \"lat\": 44.037882130818225,\r\n                            \"lon\": 5.064881989019341\r\n                        },\r\n                        {\r\n                            \"accuracy\": \"RANGE_INTERPOLATED\",\r\n                            \"lat\": 51.5064,\r\n                            \"lon\": -0.2317\r\n                        },\r\n                        {\r\n                            \"accuracy\": \"ROOFTOP\",\r\n                            \"lat\": 51.4888,\r\n                            \"lon\": -0.1977\r\n                        }\r\n                    ],\r\n                    \"type\": \"object\"\r\n                },\r\n                \"hours\": {\r\n                    \"#docs\": [\r\n                        108,\r\n                        1\r\n                    ],\r\n                    \"%docs\": [\r\n                        99.08,\r\n                        0.91\r\n                    ],\r\n                    \"samples\": [\r\n                        [\r\n                            null\r\n                        ],\r\n                        [\r\n                            \"10AM-midnight daily\"\r\n                        ]\r\n                    ],\r\n                    \"type\": [\r\n                        \"null\",\r\n                        \"string\"\r\n                    ]\r\n                },\r\n                \"id\": {\r\n                    \"#docs\": 109,\r\n                    \"%docs\": 100,\r\n                    \"samples\": [\r\n                        11755,\r\n                        16141,\r\n                        16149,\r\n                        16387,\r\n                        40348\r\n                    ],\r\n                    \"type\": \"number\"\r\n                },\r\n                \"image\": {\r\n                    \"#docs\": [\r\n                        1,\r\n                        108\r\n                    ],\r\n                    \"%docs\": [\r\n                        0.91,\r\n                        99.08\r\n                    ],\r\n                    \"samples\": [\r\n                        [\r\n                            null\r\n                        ],\r\n                        [\r\n                            \"https:\/\/en.wikivoyage.org\/wiki...\",\r\n                            \"https:\/\/en.wikivoyage.org\/wiki...\",\r\n                            \"https:\/\/en.wikivoyage.org\/wiki...\",\r\n                            \"https:\/\/en.wikivoyage.org\/wiki...\",\r\n                            \"https:\/\/en.wikivoyage.org\/wiki...\"\r\n                        ]\r\n                    ],\r\n                    \"type\": [\r\n                        \"null\",\r\n                        \"string\"\r\n                    ]\r\n                },\r\n                \"image_direct_url\": {\r\n                    \"#docs\": 7,\r\n                    \"%docs\": 6.42,\r\n                    \"samples\": [\r\n                        \"https:\/\/upload.wikimedia.org\/w...\",\r\n                        \"https:\/\/upload.wikimedia.org\/w...\",\r\n                        \"https:\/\/upload.wikimedia.org\/w...\",\r\n                        \"https:\/\/upload.wikimedia.org\/w...\",\r\n                        \"\"\r\n                    ],\r\n                    \"type\": \"string\"\r\n                },\r\n                \"name\": {\r\n                    \"#docs\": 109,\r\n                    \"%docs\": 100,\r\n                    \"samples\": [\r\n                        \"Bush Hall\",\r\n                        \"Earl's Court Exhibition Centre\",\r\n                        \"Fulham FC\",\r\n                        \"Hippodrome of Saint-Ponchon\",\r\n                        \"Hollywood Wax Museum\"\r\n                    ],\r\n                    \"type\": \"string\"\r\n                },\r\n                \"phone\": {\r\n                    \"#docs\": [\r\n                        106,\r\n                        3\r\n                    ],\r\n                    \"%docs\": [\r\n                        97.24,\r\n                        2.75\r\n                    ],\r\n                    \"samples\": [\r\n                        [\r\n                            null\r\n                        ],\r\n                        [\r\n                            \"+44 20 7385-1200\",\r\n                            \"+44 20 8222-6955\",\r\n                            \"+44 870 442 1222\"\r\n                        ]\r\n                    ],\r\n                    \"type\": [\r\n                        \"null\",\r\n                        \"string\"\r\n                    ]\r\n                },\r\n                \"price\": {\r\n                    \"#docs\": [\r\n                        108,\r\n                        1\r\n                    ],\r\n                    \"%docs\": [\r\n                        99.08,\r\n                        0.91\r\n                    ],\r\n                    \"samples\": [\r\n                        [\r\n                            null\r\n                        ],\r\n                        [\r\n                            \"Adults (13+) $15.95, children ...\"\r\n                        ]\r\n                    ],\r\n                    \"type\": [\r\n                        \"null\",\r\n                        \"string\"\r\n                    ]\r\n                },\r\n                \"state\": {\r\n                    \"#docs\": [\r\n                        3,\r\n                        106\r\n                    ],\r\n                    \"%docs\": [\r\n                        2.75,\r\n                        97.24\r\n                    ],\r\n                    \"samples\": [\r\n                        [\r\n                            null\r\n                        ],\r\n                        [\r\n                            \"Alsace-Champagne-Ardenne-Lorra...\",\r\n                            \"Basse-Normandie\",\r\n                            \"California\",\r\n                            \"Provence-Alpes-C\u00f4te d'Azur\",\r\n                            \"\u00cele-de-France\"\r\n                        ]\r\n                    ],\r\n                    \"type\": [\r\n                        \"null\",\r\n                        \"string\"\r\n                    ]\r\n                },\r\n                \"title\": {\r\n                    \"#docs\": 109,\r\n                    \"%docs\": 100,\r\n                    \"samples\": [\r\n                        \"Carpentras\",\r\n                        \"Hollywood\",\r\n                        \"London\/Hammersmith and Fulham\",\r\n                        \"London\/South Kensington-Chelse...\",\r\n                        \"Wales Coast Path\"\r\n                    ],\r\n                    \"type\": \"string\"\r\n                },\r\n                \"tollfree\": {\r\n                    \"#docs\": 109,\r\n                    \"%docs\": 100,\r\n                    \"samples\": [\r\n                        null\r\n                    ],\r\n                    \"type\": \"null\"\r\n                },\r\n                \"type\": {\r\n                    \"#docs\": 109,\r\n                    \"%docs\": 100,\r\n                    \"samples\": [\r\n                        \"landmark\"\r\n                    ],\r\n                    \"type\": \"string\"\r\n                },\r\n                \"url\": {\r\n                    \"#docs\": [\r\n                        106,\r\n                        3\r\n                    ],\r\n                    \"%docs\": [\r\n                        97.24,\r\n                        2.75\r\n                    ],\r\n                    \"samples\": [\r\n                        [\r\n                            null\r\n                        ],\r\n                        [\r\n                            \"https:\/\/www.bushhallmusic.co.uk...\",\r\n                            \"https:\/\/www.eco.co.uk\/\",\r\n                            \"https:\/\/www.fulhamfc.com\/\"\r\n                        ]\r\n                    ],\r\n                    \"type\": [\r\n                        \"null\",\r\n                        \"string\"\r\n                    ]\r\n                }\r\n            },\r\n            \"type\": \"object\"\r\n        },\r\n        {\r\n            \"#docs\": 23,\r\n            \"$schema\": \"https:\/\/json-schema.org\/draft-06\/schema\",\r\n            \"Flavor\": \"`type` = \\\"hotel\\\"\",\r\n            \"properties\": {\r\n                \"address\": {\r\n                    \"#docs\": [\r\n                        2,\r\n                        21\r\n                    ],\r\n                    \"%docs\": [\r\n                        8.69,\r\n                        91.3\r\n                    ],\r\n                    \"samples\": [\r\n                        [\r\n                            null\r\n                        ],\r\n                        [\r\n                            \"68, rue de Longchamp\",\r\n                            \"Capstone Road, ME7 3JE\",\r\n                            \"Gower Holiday Village, Scurlag...\",\r\n                            \"Knockard Road,PH16 5HJ, 0870 0...\",\r\n                            \"Llanbedrgoch\"\r\n                        ]\r\n                    ],\r\n                    \"type\": [\r\n                        \"null\",\r\n                        \"string\"\r\n                    ]\r\n                },\r\n                \"alias\": {\r\n                    \"#docs\": [\r\n                        22,\r\n                        1\r\n                    ],\r\n                    \"%docs\": [\r\n                        95.65,\r\n                        4.34\r\n                    ],\r\n                    \"samples\": [\r\n                        [\r\n                            null\r\n                        ],\r\n                        [\r\n                            \"former Concorde Lafayette\"\r\n                        ]\r\n                    ],\r\n                    \"type\": [\r\n                        \"null\",\r\n                        \"string\"\r\n                    ]\r\n                },\r\n                \"checkin\": {\r\n                    \"#docs\": [\r\n                        22,\r\n                        1\r\n                    ],\r\n                    \"%docs\": [\r\n                        95.65,\r\n                        4.34\r\n                    ],\r\n                    \"samples\": [\r\n                        [\r\n                            null\r\n                        ],\r\n                        [\r\n                            \"3PM\"\r\n                        ]\r\n                    ],\r\n                    \"type\": [\r\n                        \"null\",\r\n                        \"string\"\r\n                    ]\r\n                },\r\n                \"checkout\": {\r\n                    \"#docs\": [\r\n                        22,\r\n                        1\r\n                    ],\r\n                    \"%docs\": [\r\n                        95.65,\r\n                        4.34\r\n                    ],\r\n                    \"samples\": [\r\n                        [\r\n                            null\r\n                        ],\r\n                        [\r\n                            \"noon\"\r\n                        ]\r\n                    ],\r\n                    \"type\": [\r\n                        \"null\",\r\n                        \"string\"\r\n                    ]\r\n                },\r\n                \"city\": {\r\n                    \"#docs\": [\r\n                        1,\r\n                        22\r\n                    ],\r\n                    \"%docs\": [\r\n                        4.34,\r\n                        95.65\r\n                    ],\r\n                    \"samples\": [\r\n                        [\r\n                            null\r\n                        ],\r\n                        [\r\n                            \"Inyo County\",\r\n                            \"Medway\",\r\n                            \"Paris\",\r\n                            \"Pitlochry\",\r\n                            \"Riverside County\"\r\n                        ]\r\n                    ],\r\n                    \"type\": [\r\n                        \"null\",\r\n                        \"string\"\r\n                    ]\r\n                },\r\n                \"country\": {\r\n                    \"#docs\": 23,\r\n                    \"%docs\": 100,\r\n                    \"samples\": [\r\n                        \"France\",\r\n                        \"United Kingdom\",\r\n                        \"United States\"\r\n                    ],\r\n                    \"type\": \"string\"\r\n                },\r\n                \"description\": {\r\n                    \"#docs\": 23,\r\n                    \"%docs\": 100,\r\n                    \"samples\": [\r\n                        \"(Year Round).  This RV campgro...\",\r\n                        \"3-star boutique hotel.\",\r\n                        \"40 bed summer hostel about 3 m...\",\r\n                        \"Easily accessible from West En...\",\r\n                        \"Great 62 bed hostel near the t...\"\r\n                    ],\r\n                    \"type\": \"string\"\r\n                },\r\n                \"directions\": {\r\n                    \"#docs\": [\r\n                        22,\r\n                        1\r\n                    ],\r\n                    \"%docs\": [\r\n                        95.65,\r\n                        4.34\r\n                    ],\r\n                    \"samples\": [\r\n                        [\r\n                            null\r\n                        ],\r\n                        [\r\n                            \"downtown\"\r\n                        ]\r\n                    ],\r\n                    \"type\": [\r\n                        \"null\",\r\n                        \"string\"\r\n                    ]\r\n                },\r\n                \"email\": {\r\n                    \"#docs\": [\r\n                        22,\r\n                        1\r\n                    ],\r\n                    \"%docs\": [\r\n                        95.65,\r\n                        4.34\r\n                    ],\r\n                    \"samples\": [\r\n                        [\r\n                            null\r\n                        ],\r\n                        [\r\n                            \"julia@number38thegower.co.uk\"\r\n                        ]\r\n                    ],\r\n                    \"type\": [\r\n                        \"null\",\r\n                        \"string\"\r\n                    ]\r\n                },\r\n                \"fax\": {\r\n                    \"#docs\": [\r\n                        22,\r\n                        1\r\n                    ],\r\n                    \"%docs\": [\r\n                        95.65,\r\n                        4.34\r\n                    ],\r\n                    \"samples\": [\r\n                        [\r\n                            null\r\n                        ],\r\n                        [\r\n                            \"+1-310-821-8098\"\r\n                        ]\r\n                    ],\r\n                    \"type\": [\r\n                        \"null\",\r\n                        \"string\"\r\n                    ]\r\n                },\r\n                \"free_breakfast\": {\r\n                    \"#docs\": 23,\r\n                    \"%docs\": 100,\r\n                    \"samples\": [\r\n                        false,\r\n                        true\r\n                    ],\r\n                    \"type\": \"boolean\"\r\n                },\r\n                \"free_internet\": {\r\n                    \"#docs\": 23,\r\n                    \"%docs\": 100,\r\n                    \"samples\": [\r\n                        false,\r\n                        true\r\n                    ],\r\n                    \"type\": \"boolean\"\r\n                },\r\n                \"free_parking\": {\r\n                    \"#docs\": 23,\r\n                    \"%docs\": 100,\r\n                    \"samples\": [\r\n                        false,\r\n                        true\r\n                    ],\r\n                    \"type\": \"boolean\"\r\n                },\r\n                \"geo\": {\r\n                    \"#docs\": 23,\r\n                    \"%docs\": 100,\r\n                    \"properties\": {\r\n                        \"accuracy\": {\r\n                            \"#docs\": 23,\r\n                            \"%docs\": 100,\r\n                            \"samples\": [\r\n                                \"APPROXIMATE\",\r\n                                \"RANGE_INTERPOLATED\",\r\n                                \"ROOFTOP\"\r\n                            ],\r\n                            \"type\": \"string\"\r\n                        },\r\n                        \"lat\": {\r\n                            \"#docs\": 23,\r\n                            \"%docs\": 100,\r\n                            \"samples\": [\r\n                                33.9829,\r\n                                36.60545,\r\n                                48.86522,\r\n                                51.35785,\r\n                                56.7049\r\n                            ],\r\n                            \"type\": \"number\"\r\n                        },\r\n                        \"lon\": {\r\n                            \"#docs\": 23,\r\n                            \"%docs\": 100,\r\n                            \"samples\": [\r\n                                -117.14634,\r\n                                -116.1545,\r\n                                -3.7291,\r\n                                0.55818,\r\n                                2.28566\r\n                            ],\r\n                            \"type\": \"number\"\r\n                        }\r\n                    },\r\n                    \"samples\": [\r\n                        {\r\n                            \"accuracy\": \"APPROXIMATE\",\r\n                            \"lat\": 56.7049,\r\n                            \"lon\": -3.7291\r\n                        },\r\n                        {\r\n                            \"accuracy\": \"RANGE_INTERPOLATED\",\r\n                            \"lat\": 36.60545,\r\n                            \"lon\": -117.14634\r\n                        },\r\n                        {\r\n                            \"accuracy\": \"RANGE_INTERPOLATED\",\r\n                            \"lat\": 48.86522,\r\n                            \"lon\": 2.28566\r\n                        },\r\n                        {\r\n                            \"accuracy\": \"RANGE_INTERPOLATED\",\r\n                            \"lat\": 51.35785,\r\n                            \"lon\": 0.55818\r\n                        },\r\n                        {\r\n                            \"accuracy\": \"ROOFTOP\",\r\n                            \"lat\": 33.9829,\r\n                            \"lon\": -116.1545\r\n                        }\r\n                    ],\r\n                    \"type\": \"object\"\r\n                },\r\n                \"id\": {\r\n                    \"#docs\": 23,\r\n                    \"%docs\": 100,\r\n                    \"samples\": [\r\n                        7392,\r\n                        10025,\r\n                        12928,\r\n                        21663,\r\n                        22461\r\n                    ],\r\n                    \"type\": \"number\"\r\n                },\r\n                \"name\": {\r\n                    \"#docs\": 23,\r\n                    \"%docs\": 100,\r\n                    \"samples\": [\r\n                        \"Hotel Longchamp Elys\u00e9es\",\r\n                        \"Medway Youth Hostel\",\r\n                        \"Pitlochry Youth Hostel\",\r\n                        \"Ryan Campground\",\r\n                        \"Stovepipe Wells RV Campground\"\r\n                    ],\r\n                    \"type\": \"string\"\r\n                },\r\n                \"pets_ok\": {\r\n                    \"#docs\": 23,\r\n                    \"%docs\": 100,\r\n                    \"samples\": [\r\n                        false,\r\n                        true\r\n                    ],\r\n                    \"type\": \"boolean\"\r\n                },\r\n                \"phone\": {\r\n                    \"#docs\": [\r\n                        21,\r\n                        2\r\n                    ],\r\n                    \"%docs\": [\r\n                        91.3,\r\n                        8.69\r\n                    ],\r\n                    \"samples\": [\r\n                        [\r\n                            null\r\n                        ],\r\n                        [\r\n                            \"+44 1248 450051\",\r\n                            \"+44 870 770 5964\"\r\n                        ]\r\n                    ],\r\n                    \"type\": [\r\n                        \"null\",\r\n                        \"string\"\r\n                    ]\r\n                },\r\n                \"price\": {\r\n                    \"#docs\": [\r\n                        21,\r\n                        2\r\n                    ],\r\n                    \"%docs\": [\r\n                        91.3,\r\n                        8.69\r\n                    ],\r\n                    \"samples\": [\r\n                        [\r\n                            null\r\n                        ],\r\n                        [\r\n                            \"$10 per night\",\r\n                            \"$23 a night\"\r\n                        ]\r\n                    ],\r\n                    \"type\": [\r\n                        \"null\",\r\n                        \"string\"\r\n                    ]\r\n                },\r\n                \"public_likes\": {\r\n                    \"#docs\": 23,\r\n                    \"%docs\": 100,\r\n                    \"items\": {\r\n                        \"type\": \"string\"\r\n                    },\r\n                    \"maxItems\": 9,\r\n                    \"minItems\": 0,\r\n                    \"samples\": [\r\n                        [],\r\n                        [\r\n                            \"Julius Tromp I\",\r\n                            \"Corrine Hilll\",\r\n                            \"Jaeden McKenzie\",\r\n                            \"Vallie Ryan\",\r\n                            \"Brian Kilback\",\r\n                            \"Lilian McLaughlin\",\r\n                            \"Ms. Moses Feeney\",\r\n                            \"Elnora Trantow\"\r\n                        ],\r\n                        [\r\n                            \"Mr. Franco Collins\",\r\n                            \"Cloyd Stark\",\r\n                            \"Eliseo Herman\"\r\n                        ],\r\n                        [\r\n                            \"Ms. Wiley Torp\",\r\n                            \"Missouri Sauer\",\r\n                            \"Chanel Kirlin\",\r\n                            \"Trystan Rolfson\",\r\n                            \"Mr. Emma Oberbrunner\",\r\n                            \"Marina Stracke\",\r\n                            \"Cody Hand\",\r\n                            \"Tracey Price\",\r\n                            \"Raven Romaguera\"\r\n                        ],\r\n                        [\r\n                            \"Stefan Greenfelder\",\r\n                            \"Rosemary Doyle\",\r\n                            \"Abdullah Lindgren\",\r\n                            \"Gregorio Emard\"\r\n                        ]\r\n                    ],\r\n                    \"type\": \"array\"\r\n                },\r\n                \"reviews\": {\r\n                    \"#docs\": 23,\r\n                    \"%docs\": 100,\r\n                    \"items\": {\r\n                        \"#docs\": 3,\r\n                        \"$schema\": \"https:\/\/json-schema.org\/draft-06\/schema\",\r\n                        \"Flavor\": \"\",\r\n                        \"properties\": {\r\n                            \"author\": {\r\n                                \"#docs\": 3,\r\n                                \"%docs\": 100,\r\n                                \"samples\": [\r\n                                    \"Cornelius Brakus\",\r\n                                    \"Dorcas VonRueden\",\r\n                                    \"Jo Collier\"\r\n                                ],\r\n                                \"type\": \"string\"\r\n                            },\r\n                            \"content\": {\r\n                                \"#docs\": 3,\r\n                                \"%docs\": 100,\r\n                                \"samples\": [\r\n                                    \"A decent-sized room for the lo...\",\r\n                                    \"GOOD DEAL FOR THE PRICE AND LO...\",\r\n                                    \"Stay away of this hotel!! With...\"\r\n                                ],\r\n                                \"type\": \"string\"\r\n                            },\r\n                            \"date\": {\r\n                                \"#docs\": 3,\r\n                                \"%docs\": 100,\r\n                                \"samples\": [\r\n                                    \"2012-09-05 22:33:09 +0300\",\r\n                                    \"2012-09-11 19:21:15 +0300\",\r\n                                    \"2014-06-11 09:35:15 +0300\"\r\n                                ],\r\n                                \"type\": \"string\"\r\n                            },\r\n                            \"ratings\": {\r\n                                \"#docs\": 3,\r\n                                \"%docs\": 100,\r\n                                \"properties\": {\r\n                                    \"Business service (e.g., internet access)\": {\r\n                                        \"#docs\": 1,\r\n                                        \"%docs\": 33.33,\r\n                                        \"samples\": [\r\n                                            1\r\n                                        ],\r\n                                        \"type\": \"number\"\r\n                                    },\r\n                                    \"Check in \/ front desk\": {\r\n                                        \"#docs\": 2,\r\n                                        \"%docs\": 66.66,\r\n                                        \"samples\": [\r\n                                            2,\r\n                                            5\r\n                                        ],\r\n                                        \"type\": \"number\"\r\n                                    },\r\n                                    \"Cleanliness\": {\r\n                                        \"#docs\": 2,\r\n                                        \"%docs\": 66.66,\r\n                                        \"samples\": [\r\n                                            4,\r\n                                            5\r\n                                        ],\r\n                                        \"type\": \"number\"\r\n                                    },\r\n                                    \"Location\": {\r\n                                        \"#docs\": 3,\r\n                                        \"%docs\": 100,\r\n                                        \"samples\": [\r\n                                            2,\r\n                                            3,\r\n                                            5\r\n                                        ],\r\n                                        \"type\": \"number\"\r\n                                    },\r\n                                    \"Overall\": {\r\n                                        \"#docs\": 3,\r\n                                        \"%docs\": 100,\r\n                                        \"samples\": [\r\n                                            1,\r\n                                            4,\r\n                                            5\r\n                                        ],\r\n                                        \"type\": \"number\"\r\n                                    },\r\n                                    \"Rooms\": {\r\n                                        \"#docs\": 3,\r\n                                        \"%docs\": 100,\r\n                                        \"samples\": [\r\n                                            1,\r\n                                            3,\r\n                                            5\r\n                                        ],\r\n                                        \"type\": \"number\"\r\n                                    },\r\n                                    \"Service\": {\r\n                                        \"#docs\": 3,\r\n                                        \"%docs\": 100,\r\n                                        \"samples\": [\r\n                                            2,\r\n                                            3,\r\n                                            5\r\n                                        ],\r\n                                        \"type\": \"number\"\r\n                                    },\r\n                                    \"Value\": {\r\n                                        \"#docs\": 3,\r\n                                        \"%docs\": 100,\r\n                                        \"samples\": [\r\n                                            2,\r\n                                            5\r\n                                        ],\r\n                                        \"type\": \"number\"\r\n                                    }\r\n                                },\r\n                                \"samples\": [\r\n                                    {\r\n                                        \"Cleanliness\": 4,\r\n                                        \"Location\": 3,\r\n                                        \"Overall\": 4,\r\n                                        \"Rooms\": 3,\r\n                                        \"Service\": 3,\r\n                                        \"Value\": 5\r\n                                    }\r\n                                ],\r\n                                \"type\": \"object\"\r\n                            }\r\n                        },\r\n                        \"type\": \"object\"\r\n                    },\r\n                    \"maxItems\": 9,\r\n                    \"minItems\": 0,\r\n                    \"samples\": [\r\n                        [\r\n                            {\r\n                                \"author\": \"Bernhard Armstrong III\",\r\n                                \"content\": \"When I told the cab driver where I was staying, he did a double take. That should have been my warning but since I had no where else to go, I was stuck. To say this place is tired is an understatement. Upon entering, it took me about 10 minutes to locate the 'front desk'...which is little more than a recessed kiosk. I got to the elevator and into my room. The room was cavernous...very large and covered in old stained pink carpeting. The doors rattled and the lock didn't seem secure. At night, I wedged a chair against the door for added protection. This was a huge room but the sparse furniture in the room was all set around the walls and made the room uncomfortably large. The bed was set against one wall and the small tv was set all the way across the room on an old dresser. It was so far away, the remote didn't work unless I got out of bed and walked up a few feet. The casino itself is old...old...old. Carpeting is old, stained and tired. Much like the elephant's graveyard, I truly believe this is where gamblers to go die. I played some texas hold 'em there and true to some of the 'press' the owner sat down and played with us. He was a nice enough guy but has some serious health problems and drank himself into a stupor while playing. The drink lady obviously knew him well and had been there for years. She was visibly concerned about his health and questioned his drinking...which just aggrevated the owner. It was not a pleasant scene and was actually depressing. The owner eventually staggered away. While at the table, I struck up a conversation with the guy next to me. We were having a pleasant conversation and this particular dealer ragged on us incessantly about 'table talking'. I like social games and that's half the fun but this guy ragged us to the point that we quit tipping him. The other guy eventually told the dealer to go ---- himself and left and I followed suit. The casino is a block off from the Fremont Street Experience and block you have to cross is a concern. The cab driver warned me not to be out at night in that area. He said there were a lot of crack heads and they were known to mug people. I ended up playing downtown a lot but made my way back before dark each evening. Careful Kitty's is ok. It's an old diner. Food was alright and the service was friendly. There were lots of old tired-looking people hanging around who appeared to have health related problems. I'm truly sorry for these people but I was there to have fun and it was just depressing. I went back there once with my girlfriend to show her the place. She couldn't believe I actually stayed there. She played some slots and then said that the place 'creeped' her out and she wanted to leave NOW... I'll stay downtown anytime and actually prefer it to the strip but I'll never make this mistake again. The room was cheap but I paid a much higher price by sacrificing my enjoyment. I've been to Vegas many times and this was, by far, the worse experience I've ever had.\",\r\n                                \"date\": \"2012-03-26 11:54:35 +0300\",\r\n                                \"ratings\": {\r\n                                    \"Cleanliness\": 2,\r\n                                    \"Overall\": 1,\r\n                                    \"Rooms\": 1,\r\n                                    \"Service\": 3,\r\n                                    \"Value\": 1\r\n                                }\r\n                            }\r\n                        ],\r\n                        [\r\n                            {\r\n                                \"author\": \"Jo Collier\",\r\n                                \"content\": \"A decent-sized room for the low $100s two stops from Times Square on the express train. If you're looking to see New York (and not spend your days at your accommodation) Hotel Newton works very well. It's a nice place, seems well kept. Had no trouble at all-- worked great as a place to sleep and keep our stuff while we touristed. It is walking distance from few things, but the location's best because you're a block and a half from the 96th st station, which will take you downtown pretty quickly on an express train.\",\r\n                                \"date\": \"2014-06-11 09:35:15 +0300\",\r\n                                \"ratings\": {\r\n                                    \"Cleanliness\": 4,\r\n                                    \"Location\": 3,\r\n                                    \"Overall\": 4,\r\n                                    \"Rooms\": 3,\r\n                                    \"Service\": 3,\r\n                                    \"Value\": 5\r\n                                }\r\n                            },\r\n                            {\r\n                                \"author\": \"Cornelius Brakus\",\r\n                                \"content\": \"Stay away of this hotel!! With the same price you could have hotel with better location, clean room and own bathroom. Our room was very small, awfully cold, dirty (and the cleaning lady did not clean it while on our stay) and the shared bathroom was awful. Our stay did feel like we would be in a motel. Also, this is not a three star hotel as it did say on Booking.com, this is fairly a 1 star hotel, or more like a hostel.\",\r\n                                \"date\": \"2012-09-05 22:33:09 +0300\",\r\n                                \"ratings\": {\r\n                                    \"Business service (e.g., internet access)\": 1,\r\n                                    \"Check in \/ front desk\": 2,\r\n                                    \"Location\": 2,\r\n                                    \"Overall\": 1,\r\n                                    \"Rooms\": 1,\r\n                                    \"Service\": 2,\r\n                                    \"Value\": 2\r\n                                }\r\n                            },\r\n                            {\r\n                                \"author\": \"Dorcas VonRueden\",\r\n                                \"content\": \"GOOD DEAL FOR THE PRICE AND LOCATION,a friendly,helpful staff..rooms are clean,rm 502,503 view of broadway.. nothing to see but cars.. quiet ,safe area,,rite aid close by,mcdonald's for nite snacks. Sept 2008 visit, 4 adults 2 rooms,..saved 500.00-600.00 each by staying here instead of Sheraton or Park Central. The Newton hotel is ideally located on the main subway line at 96th Street. An express Brooklyn bound train takes you to the heart of Times Sqaure in just a few minutes. We would stay here again.. looked at many sites, not disappointed in the pick..\",\r\n                                \"date\": \"2012-09-11 19:21:15 +0300\",\r\n                                \"ratings\": {\r\n                                    \"Check in \/ front desk\": 5,\r\n                                    \"Cleanliness\": 5,\r\n                                    \"Location\": 5,\r\n                                    \"Overall\": 5,\r\n                                    \"Rooms\": 5,\r\n                                    \"Service\": 5,\r\n                                    \"Value\": 5\r\n                                }\r\n                            }\r\n                        ],\r\n                        [\r\n                            {\r\n                                \"author\": \"Joshua Rogahn\",\r\n                                \"content\": \"I am a very demanding traveller and the AVIA exceeded my expectations with the delivery of a 5 star hotel experience at a 3 star rate. Beautiful new hotel with outstanding room amenities (double sided fireplace, huge flatscreen TV's, tasteful and modern decoration, comfy beds etc.). Concierge was very helpful, connected and knowledgeable and it became readily apparent that she truly cares about the guests' experience in Napa. Restaurant recommendations were \\\"spot on\\\" and she booked us on a truly memorable, first class tour of the Napa Valley (at a fraction of the price and hassle of what we could have arranged ourselves). An all round excellent experience here.\",\r\n                                \"date\": \"2013-12-22 18:40:29 +0300\",\r\n                                \"ratings\": {\r\n                                    \"Overall\": 5\r\n                                }\r\n                            },\r\n                            {\r\n                                \"author\": \"Madisyn Greenholt\",\r\n                                \"content\": \"What a wonderful find! Nestled in the heart of downtown is this \\\"urban oasis\\\" that delivers a warm and hospitable lodging experience. A definite departure from some of the \\\"teddy bear and lace\\\" experiences from previous trips, the AVIA Napa starts and ends with you feeling as if you were a long-lost member of the family, home for a short visit. The rooms are comfortable and inviting. Appointed with luxurious linens that covered one of the most comfortable beds that we have ever slept in. The bathrooms are bright and spacious with plenty of room for two. Our room had a lovely soaking tub and a large flat screen television. The restaurant only serves breakfast and lunch, which works out fine since most people are out wine tasting or shopping during the day. Breakfast was a feast for the eyes and the stomach, offering everything from steel cut oatmeal to perfect omelets. The dinner menu features a variety of delectable \\\"small plates\\\" with something for every palate. Everything was very good!\",\r\n                                \"date\": \"2013-11-10 19:53:53 +0300\",\r\n                                \"ratings\": {\r\n                                    \"Cleanliness\": 5,\r\n                                    \"Location\": 5,\r\n                                    \"Overall\": 5,\r\n                                    \"Rooms\": 5,\r\n                                    \"Service\": 5,\r\n                                    \"Value\": 5\r\n                                }\r\n                            },\r\n                            {\r\n                                \"author\": \"Griffin Barton\",\r\n                                \"content\": \"stayed here during my last trip. the rooms are clean. bathroom is big but not that functional. free wifi and bottled water. location is quite a walk from nathan road, so if you intent to go back and forth your hotel room you might find it a task. there is noise that you can hear inside the room on weekend nights because there are clubs near the hotel. overall it is still good value!\",\r\n                                \"date\": \"2014-05-05 23:33:30 +0300\",\r\n                                \"ratings\": {\r\n                                    \"Cleanliness\": 5,\r\n                                    \"Location\": 4,\r\n                                    \"Overall\": 5,\r\n                                    \"Rooms\": 5,\r\n                                    \"Service\": 4,\r\n                                    \"Sleep Quality\": 5,\r\n                                    \"Value\": 5\r\n                                }\r\n                            },\r\n                            {\r\n                                \"author\": \"Marguerite Crist\",\r\n                                \"content\": \"Good location! Worth it to spend a little more on the deluxe room. Although for some weird reason the lift always smelled of cigarettes! Don't know why?!? Non smoking rooms no smell.\",\r\n                                \"date\": \"2013-10-21 19:04:09 +0300\",\r\n                                \"ratings\": {\r\n                                    \"Cleanliness\": 4,\r\n                                    \"Location\": 5,\r\n                                    \"Overall\": 4,\r\n                                    \"Rooms\": 4,\r\n                                    \"Service\": 3,\r\n                                    \"Value\": 3\r\n                                }\r\n                            }\r\n                        ],\r\n                        [\r\n                            {\r\n                                \"author\": \"Miss Alycia Schulist\",\r\n                                \"content\": \"Such an awesome &amp; trendy hotel! As my husband says : 'Off it's head' Wish we got to stay longer. A surpise or two in our room each day, from lolliops to water to chocolates. Cant wait to get back there\",\r\n                                \"date\": \"2015-08-06 06:15:56 +0300\",\r\n                                \"ratings\": {\r\n                                    \"Cleanliness\": 5,\r\n                                    \"Overall\": 5,\r\n                                    \"Service\": 5,\r\n                                    \"Sleep Quality\": 5,\r\n                                    \"Value\": 5\r\n                                }\r\n                            },\r\n                            {\r\n                                \"author\": \"Reynold O'Connell\",\r\n                                \"content\": \"We have just returned from a flying visit to Barcelona to visit family and friends. A great excuse to travel at any time but now having had the \\\"ME experience\\\" we are saving the pennies (or cents) at a furious rate so we can head back as soon as possible. The hotel is located just off Avenguda Diagonal, not so far from the \\\"Gherkin\\\" building and was easily reached by airport bus transfer and short taxi ride. First impressions at reception were very good indeed. It is a boutique style hotel and the mood is nicely understated - not pretentious but very welcoming. After a speedy check - in we were shown to our rooms on the 23 rd floor. We were very fortunate to be able to have booked a suite and nothing at all disappointed, from the spectacular views of the city to the high quality furnishings and extras provided. All the electronics are Sony, Philips etc. and the bathroom complimentaries are all high quality brands. The hotel provides just about everything in the room for your stay as standard and anything else is just a phone call to reception away. Our rooms also meant that we had access to the \\\"Level\\\". This is a lounge on the 25 th floor where guests can avail themselves of complimentary beer, wine, spirits and light snacks which are refreshed throughout the day. It's a great place to meet for breakfast or for drinks before you venture out into the city. The hotel restaurant has recently been awarded it's first Michelin star and we met the chef on a tour of the hotel. He took great pleasure in showing us his kitchens which were prepping up for that evenings sittings. And that also sums up the whole attitude of the staff at this hotel. They are all obviously proud of their hotel and the work that they do in there. If they can do anything for you, it is done well and with a lovely manner. Our stay in Barcelona was greatly enhanced by our stay in the ME hotel - I hope yours will be too\",\r\n                                \"date\": \"2014-05-11 05:34:53 +0300\",\r\n                                \"ratings\": {\r\n                                    \"Cleanliness\": 5,\r\n                                    \"Location\": 4,\r\n                                    \"Overall\": 5,\r\n                                    \"Rooms\": 5,\r\n                                    \"Service\": 5,\r\n                                    \"Sleep Quality\": 5,\r\n                                    \"Value\": 5\r\n                                }\r\n                            },\r\n                            {\r\n                                \"author\": \"Elton Willms IV\",\r\n                                \"content\": \"When you arrive after a day of sightseeing at 5:30pm and your room is not yet cleaned... I leave it up to you to decide whether this is your type of hotel. So now you have to wait out in the passage or the foyer for them to clean the room...! (NO we did NOT accidentally leave the \\\"Do not disturb\\\" signs on the door or anything else that could have prevented them from cleaning the room - we were out of the room at 9am) Also have the following comments on the hotel; 1. Rooms on the small side 2. No Tea\/Coffee facilities in the room - Room service took 35min to deliver 4 coffees at a cost of around EUR 20 3. No bath - sure the hotel is funcky but a nice bath after a day out is really nice 4. Agree with previous reviewer regarding the light\/curtain swithes that can be confusing. I'm in IT and it took me a while to work it out. The curtain slider in our room was out of order. 5. Lighting in the room not suitable for getting any work done. Some people are lucky to go on a work trip or vacation without having to work at night, well I had to and it was very taxing on the eyes. 6. Location is NOT close to La Rambla or Gothic Q as suggested by other reviewers. No quick return to the hotel. Nearest tube station about 3 blocks away. Must say it is nice and quiet. 7. Privacy in bathroom. Guess some guests may find it spectacular - not me. If price is your determining factor, you may enjoy this hotel. Please do not expect old world charm. This is all very modern steel and glass.\",\r\n                                \"date\": \"2014-06-09 15:13:13 +0300\",\r\n                                \"ratings\": {\r\n                                    \"Cleanliness\": 3,\r\n                                    \"Location\": 2,\r\n                                    \"Overall\": 2,\r\n                                    \"Rooms\": 2,\r\n                                    \"Service\": 2,\r\n                                    \"Sleep Quality\": 2,\r\n                                    \"Value\": 3\r\n                                }\r\n                            },\r\n                            {\r\n                                \"author\": \"Arjun Turner\",\r\n                                \"content\": \"We (me and my husband ) have been to many hotels all over Europe but I really don't think we will visit this particular one in the future again.We stayed at ME Barcelona between 11\/09 to 17\/09 during a medical congress my husband had to attend .Our room was viewing the pool and part of the city (it was at the 7th floor) ,but it wasn't the location that mattered at all .The room had only a chair next to the desk and a sofa beside the bed itself . There was no lamp on the desk and the lamp over the sofa didn't work .Also my reading lamp (on my side of the bed ) didn't work .The lighting therefore was very poor for anyone who would like to work or write or read . The only bearable spot to do all that was just ONE SIDE OF THE BED .Beside all this , (and the most annoying ) every time the shower in the room just over our own was used , water was running inside our OWN shower from the ceiling . Shall I mention that TV didn't work ? ( we didn't care about this that much though) .We mentioned the lamps and the shower problem to the concierge ( all of them are very friendly and speak very good english ) and as a result somebody knocked our door once and mentioned the lamps but at that particular time I was resting and couldn't receive him .No second attempt was made after that apparently . To the positive side I will mention that due to a party that would have taken place during our last night at the hotel we were offered a level room (20th floor )to avoid the inconvenience of the noise, where all lamps were working at least and you wouldn't have to fret if your unknown upper level neighbor would think to take his\/her shower at the same time as you. Beside that ,breakfast was decent and for all that are kin in modern cold design the hotel is a treat .The area is a disadvantage though , the stench from the sewers was at some points unbearable the minute you stepped outside the hotel gate.\",\r\n                                \"date\": \"2014-09-08 13:41:38 +0300\",\r\n                                \"ratings\": {\r\n                                    \"Cleanliness\": 3,\r\n                                    \"Location\": 2,\r\n                                    \"Overall\": 2,\r\n                                    \"Rooms\": 2,\r\n                                    \"Service\": 2,\r\n                                    \"Sleep Quality\": 4,\r\n                                    \"Value\": 2\r\n                                }\r\n                            },\r\n                            {\r\n                                \"author\": \"Miss Abelardo Mitchell\",\r\n                                \"content\": \"We stayed here for 4 nights in June having just spent 3 nights in the W Barcelona. We booked on Last Minute.com so got a cheaper price than normal room rates however it was still more expensive than other hotels closer to the city centre. We were wanting a bit of luxury for a week and thought Barcelona was ideal for a part relaxing beach\/sun holiday and part city break. We only booked this hotel because it had a pool and a 5* rating. We arrived at the hotel and the check-in queue was enormous so we had a relaxing drink in the comfortable bar area. To be fair check in was quick once we got the front of the queue but the entire foyer area smelt a bit wierd. The place is trying too hard to be cool with dubious colour choices for furnishings and steel walls??!!! Our room was ok the bed very comfortable and we got a good nights sleep (we were woken every morning by the maids at about 9am though). The bathroom had no extractor ran that we could find and after a shower the condensation ran down the glass panel separating the room from the bathroom and left dirty marks on the window ledge. I wouldn't say the room was spotless but it was adequate. This hotel was in quite a poor location - ok so fairly close to the nearest tube station (10 mins walk) and tram stop (5 mins) but a way out of the city. Cabs in barcelona are fairly cheap though so this isn't really a massive issue. The worst part about our stay was that on our last day we were enjoying the sun in the pool area when we were asked to leave due to there being a private party in the area. There was no pre warning or notification of this and we had to get up and tramp down to the beach via the tube to enjoy our last day of sun (I am 5 months pregnant with twins so was hoping for a relaxing day!!!!!!!!) I wouldn't recommend this hotel if you are expecting 5* luxury. If you are happy for 3-4* quality and service in a fairly poor location this hotel could just be for you!\",\r\n                                \"date\": \"2013-11-27 03:52:23 +0300\",\r\n                                \"ratings\": {\r\n                                    \"Cleanliness\": 2,\r\n                                    \"Location\": 1,\r\n                                    \"Overall\": 3,\r\n                                    \"Rooms\": 3,\r\n                                    \"Service\": 2,\r\n                                    \"Sleep Quality\": 4,\r\n                                    \"Value\": 2\r\n                                }\r\n                            },\r\n                            {\r\n                                \"author\": \"Abdullah Lubowitz\",\r\n                                \"content\": \"... all that glitters, is not gold and the Hotel Me really didn't hit a good note with me. We were here for a business convention and on first look, the hotel and the rooms look great - until you try to utilise them. The hotel is a taxi ride to any tourist areas of Barcelona or a 30 min walk. There is a decent area about 8 mins walk for restaurants but this is NOT a city centre hotel. The rooms are attempting to be model and minimalist but end up being unfunctional and uncomfortable. Here's my room issues: 1. No kettle\/coffee maker in the room. Virtually unheard of in a hotel of it's \\\"class\\\". 2. Cement floor in room, slippery when wet and cold. Carpets, wood, whatever ... not this cheap alternative. 3. Chair at desk is not a work station chair but a cheap, \\\"trendy\\\" plastic design - not good. 4. Impossible to shower without getting the bathroom floor drenched. 5. The wrap around curtain on 2 walls ... whose idea was this? Only one wall is window but the curtain covers both and is VERY slow on it's automatic open\/close. Furthermore, it didn't close all the way and left a 3 inch gap for the light to stream in at 6am. 6. There is a control panel for all the lights and AC. Each button pressed done something different, each time. Everybody I spoke to had this problem. 7 Outrageously priced mini-bar and room service (18Euro for a hamburger) and as your miles from anyway, it's a good weight loss hotel! Beds were good, TV was ok, other bathroom facilities good - and their maid service is some of the best I've seen. Other problems. Bar staff are worthless. People waiting to be served, while 2 of them stocked and cleaned, 1 served - very slowly. 5euro for a 330ml glass of tap beer is twice the price of anywhere we drank. Outside the elevators on every floor smelled of toilets - probably because the rooms toilets backed onto that area. Poor ventilation? Breakfast is a very generous 11am finish except at weekends when it's even better at 12noon. Arriving at 11.05 on a Saturday, we were told it was finished. Questioning why, \\\"because we have to set up for a lunch meeting in this room\\\". Even though we told her the note in the room said 12, when we checked in we were told 12 - she said there is nothing she could do, even though we could see a full buffet breakfast table and people eating. It was only after demanding a manager that another staff member made a call and let us in - it should not have came to this. Smokers - forget it if it rains, there is no area even remotely or partially covered outside! Overall, this hotel just failed. It has a few good points but it's not comfortable, doesn't provide you a feeling of luxury or a level of relaxation and just feels a bit like they don't know what they're doing.\",\r\n                                \"date\": \"2012-03-29 11:12:46 +0300\",\r\n                                \"ratings\": {\r\n                                    \"Cleanliness\": 5,\r\n                                    \"Location\": 1,\r\n                                    \"Overall\": 2,\r\n                                    \"Rooms\": 2,\r\n                                    \"Service\": 3,\r\n                                    \"Sleep Quality\": 2,\r\n                                    \"Value\": 1\r\n                                }\r\n                            },\r\n                            {\r\n                                \"author\": \"Kory Schultz\",\r\n                                \"content\": \"We were booked into the ME for 9 nights, we checked out after 3, staff were very unfriendly and unhelpfull. the rooms are among the smallest Ive ever stayed in. Cannot understand how this hotel got rated with 5 star, no way, 3 star at best..The walls in room were marked, the corridors looked as if thay had never been hoovered. The sockets were loose. On the 2nd day, no one cleaned our room or made bed, we had to ring twice for toilet rolls and towels, The air con did not go down past 23. We couldnt wait to check out, we moved to the arts hotel where we found a real 5 star hotel\",\r\n                                \"date\": \"2014-05-19 00:36:42 +0300\",\r\n                                \"ratings\": {\r\n                                    \"Cleanliness\": 1,\r\n                                    \"Location\": 2,\r\n                                    \"Overall\": 1,\r\n                                    \"Rooms\": 1,\r\n                                    \"Service\": 1,\r\n                                    \"Value\": 1\r\n                                }\r\n                            },\r\n                            {\r\n                                \"author\": \"Curt Nolan\",\r\n                                \"content\": \"A visually stunning hotel. The rooms were compact but very well designed. No hint of problems with smells, music and drains that have been mentioned on previous reviews. BUT - two big problems: 1. After being told that I was entitled to one item of clothing to be ironed per day - complimentary, I gave my shirt to the very charming lady who showed me my room. The shirt didn't turn up until 45 minutes after I was supposed to leave the following morning making me late for a meeting. I also had to make several calls to get the shirt back. 2. The 22 Euro club sandwich and fries was inedible. A disgrace. It doesn't matter how beautiful and stylish a hotel is, if it can't get the basics right - it should and will fail. I would have whole heartedly recommended this hotel at 9pm on my day of arrival - now, I wouldn't. That's why it's a shame.\",\r\n                                \"date\": \"2014-08-09 00:49:46 +0300\",\r\n                                \"ratings\": {\r\n                                    \"Cleanliness\": 5,\r\n                                    \"Location\": 3,\r\n                                    \"Overall\": 2,\r\n                                    \"Rooms\": 5,\r\n                                    \"Service\": 1,\r\n                                    \"Value\": 3\r\n                                }\r\n                            }\r\n                        ],\r\n                        [\r\n                            {\r\n                                \"author\": \"Ozella Sipes\",\r\n                                \"content\": \"This was our 2nd trip here and we enjoyed it as much or more than last year. Excellent location across from the French Market and just across the street from the streetcar stop. Very convenient to several small but good restaurants. Very clean and well maintained. Housekeeping and other staff are all friendly and helpful. We really enjoyed sitting on the 2nd floor terrace over the entrance and \\\"people-watching\\\" on Esplanade Ave., also talking with our fellow guests. Some furniture could use a little updating or replacement, but nothing major.\",\r\n                                \"date\": \"2013-06-22 18:33:50 +0300\",\r\n                                \"ratings\": {\r\n                                    \"Cleanliness\": 5,\r\n                                    \"Location\": 4,\r\n                                    \"Overall\": 4,\r\n                                    \"Rooms\": 3,\r\n                                    \"Service\": 5,\r\n                                    \"Value\": 4\r\n                                }\r\n                            },\r\n                            {\r\n                                \"author\": \"Barton Marks\",\r\n                                \"content\": \"We found the hotel de la Monnaie through Interval and we thought we'd give it a try while we attended a conference in New Orleans. This place was a perfect location and it definitely beat staying downtown at the Hilton with the rest of the attendees. We were right on the edge of the French Quarter withing walking distance of the whole area. The location on Esplanade is more of a residential area so you are near the fun but far enough away to enjoy some quiet downtime. We loved the trolly car right across the street and we took that down to the conference center for the conference days we attended. We also took it up Canal Street and nearly delivered to the WWII museum. From there we were able to catch a ride to the Garden District - a must see if you love old architecture - beautiful old homes(mansions). We at lunch ate Joey K's there and it was excellent. We ate so many places in the French Quarter I can't remember all the names. My husband loved all the NOL foods - gumbo, jambalya and more. I'm glad we found the Louisiana Pizza Kitchen right on the other side of the U.S. Mint (across the street from Monnaie). Small little spot but excellent pizza! The day we arrived was a huge jazz festival going on across the street. However, once in our rooms, you couldn't hear any outside noise. Just the train at night blowin it's whistle! We enjoyed being so close to the French Market and within walking distance of all the sites to see. And you can't pass up the Cafe du Monde down the street - a busy happenning place with the best French dougnuts!!!Delicious! We will defintely come back and would stay here again. We were not hounded to purchase anything. My husband only received one phone call regarding timeshare and the woman was very pleasant. The staff was laid back and friendly. My only complaint was the very firm bed. Other than that, we really enjoyed our stay. Thanks Hotel de la Monnaie!\",\r\n                                \"date\": \"2015-03-02 19:56:13 +0300\",\r\n                                \"ratings\": {\r\n                                    \"Business service (e.g., internet access)\": 4,\r\n                                    \"Check in \/ front desk\": 4,\r\n                                    \"Cleanliness\": 4,\r\n                                    \"Location\": 4,\r\n                                    \"Overall\": 4,\r\n                                    \"Rooms\": 3,\r\n                                    \"Service\": 3,\r\n                                    \"Value\": 5\r\n                                }\r\n                            }\r\n                        ]\r\n                    ],\r\n                    \"type\": \"array\"\r\n                },\r\n                \"state\": {\r\n                    \"#docs\": [\r\n                        21,\r\n                        2\r\n                    ],\r\n                    \"%docs\": [\r\n                        91.3,\r\n                        8.69\r\n                    ],\r\n                    \"samples\": [\r\n                        [\r\n                            null\r\n                        ],\r\n                        [\r\n                            \"California\"\r\n                        ]\r\n                    ],\r\n                    \"type\": [\r\n                        \"null\",\r\n                        \"string\"\r\n                    ]\r\n                },\r\n                \"title\": {\r\n                    \"#docs\": 23,\r\n                    \"%docs\": 100,\r\n                    \"samples\": [\r\n                        \"Death Valley National Park\",\r\n                        \"Gillingham (Kent)\",\r\n                        \"Joshua Tree National Park\",\r\n                        \"Paris\/16th arrondissement\",\r\n                        \"Pitlochry\"\r\n                    ],\r\n                    \"type\": \"string\"\r\n                },\r\n                \"tollfree\": {\r\n                    \"#docs\": [\r\n                        22,\r\n                        1\r\n                    ],\r\n                    \"%docs\": [\r\n                        95.65,\r\n                        4.34\r\n                    ],\r\n                    \"samples\": [\r\n                        [\r\n                            null\r\n                        ],\r\n                        [\r\n                            \"+1-000-821-8277\"\r\n                        ]\r\n                    ],\r\n                    \"type\": [\r\n                        \"null\",\r\n                        \"string\"\r\n                    ]\r\n                },\r\n                \"type\": {\r\n                    \"#docs\": 23,\r\n                    \"%docs\": 100,\r\n                    \"samples\": [\r\n                        \"hotel\"\r\n                    ],\r\n                    \"type\": \"string\"\r\n                },\r\n                \"url\": {\r\n                    \"#docs\": [\r\n                        2,\r\n                        21\r\n                    ],\r\n                    \"%docs\": [\r\n                        8.69,\r\n                        91.3\r\n                    ],\r\n                    \"samples\": [\r\n                        [\r\n                            null\r\n                        ],\r\n                        [\r\n                            \"https:\/\/paris-hotel-longchamp.c...\",\r\n                            \"https:\/\/www.number38thegower.co...\",\r\n                            \"https:\/\/www.syha.org.uk\/hostels...\",\r\n                            \"https:\/\/www.walestouristsonline...\",\r\n                            \"https:\/\/www.yha.org.uk\"\r\n                        ]\r\n                    ],\r\n                    \"type\": [\r\n                        \"null\",\r\n                        \"string\"\r\n                    ]\r\n                },\r\n                \"vacancy\": {\r\n                    \"#docs\": 23,\r\n                    \"%docs\": 100,\r\n                    \"samples\": [\r\n                        false,\r\n                        true\r\n                    ],\r\n                    \"type\": \"boolean\"\r\n                }\r\n            },\r\n            \"type\": \"object\"\r\n        },\r\n        {\r\n            \"#docs\": 3,\r\n            \"$schema\": \"https:\/\/json-schema.org\/draft-06\/schema\",\r\n            \"Flavor\": \"`type` = \\\"airline\\\"\",\r\n            \"properties\": {\r\n                \"callsign\": {\r\n                    \"#docs\": 3,\r\n                    \"%docs\": 100,\r\n                    \"samples\": [\r\n                        \"BEE MED\",\r\n                        \"CYCLONE\",\r\n                        \"REUNION\"\r\n                    ],\r\n                    \"type\": \"string\"\r\n                },\r\n                \"country\": {\r\n                    \"#docs\": 3,\r\n                    \"%docs\": 100,\r\n                    \"samples\": [\r\n                        \"France\",\r\n                        \"United Kingdom\",\r\n                        \"United States\"\r\n                    ],\r\n                    \"type\": \"string\"\r\n                },\r\n                \"iata\": {\r\n                    \"#docs\": 3,\r\n                    \"%docs\": 100,\r\n                    \"samples\": [\r\n                        \"KJ\",\r\n                        \"UU\",\r\n                        \"ZA\"\r\n                    ],\r\n                    \"type\": \"string\"\r\n                },\r\n                \"icao\": {\r\n                    \"#docs\": 3,\r\n                    \"%docs\": 100,\r\n                    \"samples\": [\r\n                        \"CYD\",\r\n                        \"LAJ\",\r\n                        \"REU\"\r\n                    ],\r\n                    \"type\": \"string\"\r\n                },\r\n                \"id\": {\r\n                    \"#docs\": 3,\r\n                    \"%docs\": 100,\r\n                    \"samples\": [\r\n                        792,\r\n                        1191,\r\n                        1543\r\n                    ],\r\n                    \"type\": \"number\"\r\n                },\r\n                \"name\": {\r\n                    \"#docs\": 3,\r\n                    \"%docs\": 100,\r\n                    \"samples\": [\r\n                        \"Access Air\",\r\n                        \"Air Austral\",\r\n                        \"British Mediterranean Airways\"\r\n                    ],\r\n                    \"type\": \"string\"\r\n                },\r\n                \"type\": {\r\n                    \"#docs\": 3,\r\n                    \"%docs\": 100,\r\n                    \"samples\": [\r\n                        \"airline\"\r\n                    ],\r\n                    \"type\": \"string\"\r\n                }\r\n            },\r\n            \"type\": \"object\"\r\n        },\r\n        {\r\n            \"#docs\": 49,\r\n            \"$schema\": \"https:\/\/json-schema.org\/draft-06\/schema\",\r\n            \"Flavor\": \"`type` = \\\"airport\\\"\",\r\n            \"properties\": {\r\n                \"airportname\": {\r\n                    \"#docs\": 49,\r\n                    \"%docs\": 100,\r\n                    \"samples\": [\r\n                        \"Hickam Air Force Base\",\r\n                        \"Joigny\",\r\n                        \"RNAS WATTON\",\r\n                        \"Sky Ranch at Carefree\",\r\n                        \"Villaroche\"\r\n                    ],\r\n                    \"type\": \"string\"\r\n                },\r\n                \"city\": {\r\n                    \"#docs\": 49,\r\n                    \"%docs\": 100,\r\n                    \"samples\": [\r\n                        \"Carefree\",\r\n                        \"Honolulu\",\r\n                        \"Joigny\",\r\n                        \"Melun\",\r\n                        \"WATTON\"\r\n                    ],\r\n                    \"type\": \"string\"\r\n                },\r\n                \"country\": {\r\n                    \"#docs\": 49,\r\n                    \"%docs\": 100,\r\n                    \"samples\": [\r\n                        \"France\",\r\n                        \"United Kingdom\",\r\n                        \"United States\"\r\n                    ],\r\n                    \"type\": \"string\"\r\n                },\r\n                \"faa\": {\r\n                    \"#docs\": [\r\n                        13,\r\n                        36\r\n                    ],\r\n                    \"%docs\": [\r\n                        26.53,\r\n                        73.46\r\n                    ],\r\n                    \"samples\": [\r\n                        [\r\n                            null\r\n                        ],\r\n                        [\r\n                            \"BZR\",\r\n                            \"GRI\",\r\n                            \"IGQ\",\r\n                            \"PRC\",\r\n                            \"RCA\"\r\n                        ]\r\n                    ],\r\n                    \"type\": [\r\n                        \"null\",\r\n                        \"string\"\r\n                    ]\r\n                },\r\n                \"geo\": {\r\n                    \"#docs\": 49,\r\n                    \"%docs\": 100,\r\n                    \"properties\": {\r\n                        \"alt\": {\r\n                            \"#docs\": 49,\r\n                            \"%docs\": 100,\r\n                            \"samples\": [\r\n                                13,\r\n                                173,\r\n                                302,\r\n                                732,\r\n                                2568\r\n                            ],\r\n                            \"type\": \"number\"\r\n                        },\r\n                        \"lat\": {\r\n                            \"#docs\": 49,\r\n                            \"%docs\": 100,\r\n                            \"samples\": [\r\n                                21.318681,\r\n                                33.8180947,\r\n                                47.992222,\r\n                                48.604725,\r\n                                52.33\r\n                            ],\r\n                            \"type\": \"number\"\r\n                        },\r\n                        \"lon\": {\r\n                            \"#docs\": 49,\r\n                            \"%docs\": 100,\r\n                            \"samples\": [\r\n                                -157.922427,\r\n                                -111.8979242,\r\n                                0.51,\r\n                                2.671119,\r\n                                3.392222\r\n                            ],\r\n                            \"type\": \"number\"\r\n                        }\r\n                    },\r\n                    \"samples\": [\r\n                        {\r\n                            \"alt\": 13,\r\n                            \"lat\": 21.318681,\r\n                            \"lon\": -157.922427\r\n                        },\r\n                        {\r\n                            \"alt\": 173,\r\n                            \"lat\": 52.33,\r\n                            \"lon\": 0.51\r\n                        },\r\n                        {\r\n                            \"alt\": 302,\r\n                            \"lat\": 48.604725,\r\n                            \"lon\": 2.671119\r\n                        },\r\n                        {\r\n                            \"alt\": 732,\r\n                            \"lat\": 47.992222,\r\n                            \"lon\": 3.392222\r\n                        },\r\n                        {\r\n                            \"alt\": 2568,\r\n                            \"lat\": 33.8180947,\r\n                            \"lon\": -111.8979242\r\n                        }\r\n                    ],\r\n                    \"type\": \"object\"\r\n                },\r\n                \"icao\": {\r\n                    \"#docs\": [\r\n                        7,\r\n                        42\r\n                    ],\r\n                    \"%docs\": [\r\n                        14.28,\r\n                        85.71\r\n                    ],\r\n                    \"samples\": [\r\n                        [\r\n                            null\r\n                        ],\r\n                        [\r\n                            \"18AZ\",\r\n                            \"EGYR\",\r\n                            \"LFGK\",\r\n                            \"LFPM\",\r\n                            \"PHIK\"\r\n                        ]\r\n                    ],\r\n                    \"type\": [\r\n                        \"null\",\r\n                        \"string\"\r\n                    ]\r\n                },\r\n                \"id\": {\r\n                    \"#docs\": 49,\r\n                    \"%docs\": 100,\r\n                    \"samples\": [\r\n                        1310,\r\n                        1384,\r\n                        4346,\r\n                        7055,\r\n                        8397\r\n                    ],\r\n                    \"type\": \"number\"\r\n                },\r\n                \"type\": {\r\n                    \"#docs\": 49,\r\n                    \"%docs\": 100,\r\n                    \"samples\": [\r\n                        \"airport\"\r\n                    ],\r\n                    \"type\": \"string\"\r\n                },\r\n                \"tz\": {\r\n                    \"#docs\": 49,\r\n                    \"%docs\": 100,\r\n                    \"samples\": [\r\n                        \"America\/Phoenix\",\r\n                        \"Europe\/London\",\r\n                        \"Europe\/Paris\",\r\n                        \"N\",\r\n                        \"Pacific\/Honolulu\"\r\n                    ],\r\n                    \"type\": \"string\"\r\n                }\r\n            },\r\n            \"type\": \"object\"\r\n        }\r\n    ]\r\n    ],\r\n    \"status\": \"success\",\r\n    \"metrics\": {\r\n        \"elapsedTime\": \"441.291712ms\",\r\n        \"executionTime\": \"441.241719ms\",\r\n        \"resultCount\": 1,\r\n        \"resultSize\": 103887\r\n    },\r\n    \"profile\": {\r\n        \"phaseTimes\": {\r\n\t    \"authorize\": \"753.932\u00b5s\",\r\n\t    \"instantiate\": \"6.388\u00b5s\",\r\n\t    \"parse\": \"151.233\u00b5s\",\r\n\t    \"plan\": \"7.117\u00b5s\",\r\n\t    \"run\": \"441.069318ms\"\r\n\t},\r\n        \"phaseOperators\": {\r\n\t    \"authorize\": 1\r\n\t},\r\n        \"executionTimings\": {\r\n\t    \"#operator\": \"Authorize\",\r\n\t    \"#stats\": {\r\n\t        \"#phaseSwitches\": 4,\r\n\t        \"execTime\": \"1.738\u00b5s\",\r\n\t        \"servTime\": \"752.194\u00b5s\"\r\n\t    },\r\n\t    \"privileges\": {\r\n\t        \"List\": [\r\n\t            {\r\n\t                \"Target\": \"travel-sample\",\r\n\t                \"Priv\": 7\r\n\t            }\r\n\t        ]\r\n\t    },\r\n\t    \"~child\": {\r\n\t        \"#operator\": \"Sequence\",\r\n\t        \"#stats\": {\r\n\t            \"#phaseSwitches\": 1,\r\n\t            \"execTime\": \"9.743\u00b5s\"\r\n\t        },\r\n\t        \"~children\": [\r\n\t            {\r\n\t                \"#operator\": \"InferKeyspace\",\r\n\t                \"#stats\": {\r\n\t                    \"#itemsOut\": 1,\r\n\t                    \"#phaseSwitches\": 7,\r\n\t                    \"execTime\": \"9.345\u00b5s\",\r\n\t                    \"kernTime\": \"438.011515ms\"\r\n\t                },\r\n\t                \"keyspace\": \"travel-sample\",\r\n\t                \"namespace\": \"\",\r\n\t                \"using\": \"default\"\r\n\t            },\r\n\t            {\r\n\t                \"#operator\": \"Stream\",\r\n\t                \"#stats\": {\r\n\t                    \"#itemsIn\": 1,\r\n\t                    \"#itemsOut\": 1,\r\n\t                    \"#phaseSwitches\": 6,\r\n\t                    \"execTime\": \"2.257622ms\",\r\n\t                    \"kernTime\": \"438.028393ms\"\r\n\t                }\r\n\t            }\r\n\t        ]\r\n\t    },\r\n\t    \"~versions\": [\r\n\t        \"7.0.0-N1QL\",\r\n\t        \"7.0.0-1784-enterprise\"\r\n\t    ]\r\n\t}\r\n    }\r\n}\r\n<\/pre>\n<p><strong>EXPLICAR<\/strong><\/p>\n<p>O Explain informa o plano de consulta para cada consulta - os \u00edndices escolhidos, os predicados e outros pushdowns, os tipos de jun\u00e7\u00e3o, a ordem de jun\u00e7\u00e3o etc.  Tanto o MongoDB quanto o Couchbase produzem o explain em formato JSON - algo natural para bancos de dados JSON.<\/p>\n<pre class=\"theme:vs2012-black font-size:17 line-height:20 height-set:true whitespace-before:2 lang:js decode:true\">MongoDB Enterprise &gt; db.CUSTOMER.find({zip:94040}).explain()\r\n{\r\n\t\"queryPlanner\" : {\r\n\t\t\"plannerVersion\" : 1,\r\n\t\t\"namespace\" : \"test.CUSTOMER\",\r\n\t\t\"indexFilterSet\" : false,\r\n\t\t\"parsedQuery\" : {\r\n\t\t\t\"zip\" : {\r\n\t\t\t\t\"$eq\" : 94040\r\n\t\t\t}\r\n\t\t},\r\n\t\t\"winningPlan\" : {\r\n\t\t\t\"stage\" : \"FETCH\",\r\n\t\t\t\"inputStage\" : {\r\n\t\t\t\t\"stage\" : \"IXSCAN\",\r\n\t\t\t\t\"keyPattern\" : {\r\n\t\t\t\t\t\"zip\" : 1\r\n\t\t\t\t},\r\n\t\t\t\t\"indexName\" : \"zip_1\",\r\n\t\t\t\t\"isMultiKey\" : false,\r\n\t\t\t\t\"multiKeyPaths\" : {\r\n\t\t\t\t\t\"zip\" : [ ]\r\n\t\t\t\t},\r\n\t\t\t\t\"isUnique\" : false,\r\n\t\t\t\t\"isSparse\" : false,\r\n\t\t\t\t\"isPartial\" : false,\r\n\t\t\t\t\"indexVersion\" : 2,\r\n\t\t\t\t\"direction\" : \"forward\",\r\n\t\t\t\t\"indexBounds\" : {\r\n\t\t\t\t\t\"zip\" : [\r\n\t\t\t\t\t\t\"[94040.0, 94040.0]\"\r\n\t\t\t\t\t]\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\t\"rejectedPlans\" : [ ]\r\n\t},\r\n\t\"serverInfo\" : {\r\n\t\t\"host\" : \"MacBook-Pro-4.attlocal.net\",\r\n\t\t\"port\" : 27017,\r\n\t\t\"version\" : \"4.0.0\",\r\n\t\t\"gitVersion\" : \"3b07af3d4f471ae89e8186d33bbb1d5259597d51\"\r\n\t},\r\n\t\"ok\" : 1\r\n}\r\nMongoDB Enterprise &gt; \r\n<\/pre>\n<p>No Couchbase, basta prefixar a declara\u00e7\u00e3o com EXPLAIN. Voc\u00ea pode explicar qualquer declara\u00e7\u00e3o no N1QL.<\/p>\n<pre class=\"theme:vs2012-black font-size:17 line-height:20 height-set:true whitespace-before:2 lang:js decode:true\">EXPLAIN SELECT * FROM CUSTOMER WHERE zip = 94040;\r\n[\r\n  {\r\n    \"plan\": {\r\n      \"#operator\": \"Sequence\",\r\n      \"~children\": [\r\n        {\r\n          \"#operator\": \"IndexScan3\",\r\n          \"index\": \"ix_customer\",\r\n          \"index_id\": \"b312ed00505a074d\",\r\n          \"index_projection\": {\r\n            \"primary_key\": true\r\n          },\r\n          \"keyspace\": \"CUSTOMER\",\r\n          \"namespace\": \"default\",\r\n          \"spans\": [\r\n            {\r\n              \"exact\": true,\r\n              \"range\": [\r\n                {\r\n                  \"high\": \"94040\",\r\n                  \"inclusion\": 3,\r\n                  \"low\": \"94040\"\r\n                }\r\n              ]\r\n            }\r\n          ],\r\n          \"using\": \"gsi\"\r\n        },\r\n        {\r\n          \"#operator\": \"Fetch\",\r\n          \"keyspace\": \"CUSTOMER\",\r\n          \"namespace\": \"default\"\r\n        },\r\n        {\r\n          \"#operator\": \"Parallel\",\r\n          \"~child\": {\r\n            \"#operator\": \"Sequence\",\r\n            \"~children\": [\r\n              {\r\n                \"#operator\": \"Filter\",\r\n                \"condition\": \"((`CUSTOMER`.`zip`) = 94040)\"\r\n              },\r\n              {\r\n                \"#operator\": \"InitialProject\",\r\n                \"result_terms\": [\r\n                  {\r\n                    \"expr\": \"self\",\r\n                    \"star\": true\r\n                  }\r\n                ]\r\n              }\r\n            ]\r\n          }\r\n        }\r\n      ]\r\n    },\r\n    \"text\": \"SELECT * FROM CUSTOMER WHERE zip = 94040;\"\r\n  }\r\n]<\/pre>\n<p>O workbench de consulta tamb\u00e9m tem uma explica\u00e7\u00e3o visual, juntamente com a cria\u00e7\u00e3o de perfis. (para uma <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/ansi-join-support-n1ql\/\">consulta<\/a>)<\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/03\/ANSI-JOIN-multiple-joins-Visual-Explain.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-4830\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/03\/ANSI-JOIN-multiple-joins-Visual-Explain-300x185.png\" alt=\"\" width=\"745\" height=\"460\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/ANSI-JOIN-multiple-joins-Visual-Explain-300x185.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/ANSI-JOIN-multiple-joins-Visual-Explain-1024x632.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/ANSI-JOIN-multiple-joins-Visual-Explain-768x474.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/ANSI-JOIN-multiple-joins-Visual-Explain-1536x948.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/ANSI-JOIN-multiple-joins-Visual-Explain-2048x1264.png 2048w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/ANSI-JOIN-multiple-joins-Visual-Explain-20x12.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/ANSI-JOIN-multiple-joins-Visual-Explain-1320x815.png 1320w\" sizes=\"auto, (max-width: 745px) 100vw, 745px\" \/><\/a><\/p>\n<p><a href=\"https:\/\/docs.couchbase.com\/server\/6.5\/n1ql\/n1ql-language-reference\/groupby.html\">GRUPO POR<\/a><\/p>\n<p>A cl\u00e1usula \"GROUP BY\" do MongoDB faz parte da API aggregate(). Aqui est\u00e1 a compara\u00e7\u00e3o.<\/p>\n<p>Diferentemente do SQL e do N1QL, a API de consulta do MongoDB tem muitos significados impl\u00edcitos sem defini\u00e7\u00f5es formais.  Com N1QL, voc\u00ea est\u00e1 ciente dos agrupamentos (b e c) e agrega\u00e7\u00f5es (SUM(a)) explicitamente.<\/p>\n<pre class=\"theme:vs2012-black lang:mysql decode:true\">\/* MongoDB *\/\r\nGrouping and aggregation is combined.\r\n\r\n$group : {\r\n          [\r\n           { a:\u201d$a\u201d}, {b:\u201d$b\u201d}, {c: \u201c$c\u201d},\r\n           count: { $sum: 1 }\r\n         ]\r\n        }\r\n\r\n\/* Couchbase: N1QL *\/\r\nSELECT b, c, SUM(a)\r\nFROM t\r\nGROUP BY b, c\r\n<\/pre>\n<p><a href=\"https:\/\/docs.couchbase.com\/server\/6.5\/n1ql\/n1ql-language-reference\/orderby.html\">ORDER BY<\/a><\/p>\n<pre class=\"theme:vs2012-black lang:js decode:true\">\/* MongoDB *\/ \r\nORDER BY\r\n     { $sort : { age : -1, posts: 1 } }\r\n\r\n\/* Couchbase: N1QLL *\/\r\nORDER BY age DESC, posts ASC\r\n<\/pre>\n<p>OFFSET e LIMIT<\/p>\n<p>Eles s\u00e3o comumente usados para o m\u00e9todo de pagina\u00e7\u00e3o de deslocamento, suportado pelo Mongo e pelo Couchbase.  No entanto, <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/offset-keyset-pagination-n1ql-query-couchbase\/\">pagina\u00e7\u00e3o do conjunto de teclas<\/a> \u00e9 uma abordagem superior que utiliza menos recursos e tem melhor desempenho. O Mongo usa as cl\u00e1usulas $skip e $limit e o N1QL usa OFFSET e LIMIT.  N\u00e3o tenho certeza sobre as otimiza\u00e7\u00f5es de pagina\u00e7\u00e3o feitas no MongoDB.<\/p>\n<p><a href=\"https:\/\/docs.couchbase.com\/server\/6.5\/n1ql\/n1ql-language-reference\/join.html\">JOINs<\/a><\/p>\n<p>As jun\u00e7\u00f5es s\u00e3o geralmente desencorajadas em bancos de dados NoSQL e no MongoDB em particular. Mas o mundo real \u00e9 complexo e n\u00e3o pode ser desnormalizado em uma \u00fanica cole\u00e7\u00e3o. O MongoDB tem o operador $lookup para a uni\u00e3o e faz um loop aninhado entre uma cole\u00e7\u00e3o (potencialmente fragmentada) e outra cole\u00e7\u00e3o (n\u00e3o pode ser fragmentada).   No Couchbase, todos os buckets s\u00e3o particionados (sharded). Opera\u00e7\u00f5es JOINs (INNER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN, jun\u00e7\u00f5es com subconsultas, NEST e UNNEST) Temos um artigo detalhado que mostra as opera\u00e7\u00f5es equivalentes entre o MongoDB e o JSON.  Recomendo que voc\u00ea leia o artigo <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/joining-json-comparing-couchbase-n1ql-mongodb\/\">Juntando JSON: comparando Couchbase e MongoDB.<\/a><\/p>\n<table>\n<tbody>\n<tr>\n<td><b>Tipo de JOIN<\/b><\/td>\n<td><b>MongoDB<\/b><\/td>\n<td><b>Couchbase\u00a0<\/b><\/td>\n<\/tr>\n<tr>\n<td><b>INNER JOIN\u00a0<\/b><\/td>\n<td><span style=\"font-weight: 400\">N\u00e3o. O $lookup \u00e9 uma uni\u00e3o externa esquerda limitada somente em cole\u00e7\u00f5es sem fragmentos. Os aplicativos precisam fazer isso e, em seguida, remover os documentos sem os documentos correspondentes.\u00a0\u00a0<\/span><\/td>\n<td><span style=\"font-weight: 400\">A cl\u00e1usula ON requer refer\u00eancia \u00e0 chave do documento. Somente Equi-join<\/span><\/td>\n<\/tr>\n<tr>\n<td><b>UNI\u00c3O EXTERNA ESQUERDA<\/b><\/td>\n<td><span style=\"font-weight: 400\">$lookup limitado.\u00a0\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">N\u00e3o \u00e9 poss\u00edvel unir matrizes.  \u00c9 necess\u00e1rio achatar as matrizes manualmente antes da uni\u00e3o.<\/span><\/td>\n<td><span style=\"font-weight: 400\">Uni\u00e3o externa esquerda completa, incluindo predicados de matriz na cl\u00e1usula ON.<\/span><\/td>\n<\/tr>\n<tr>\n<td><b>UNI\u00c3O EXTERNA DIREITA<\/b><\/td>\n<td><span style=\"font-weight: 400\">Sem suporte. Deve ser tratado no aplicativo<\/span><\/td>\n<td><span style=\"font-weight: 400\">Suporte limitado a RIGHT OUTER JOIN; foi poss\u00edvel contornar o problema com o uso de outros JOINs.<\/span><\/td>\n<\/tr>\n<tr>\n<td><b>JUN\u00c7\u00c3O EXTERNA COMPLETA<\/b><\/td>\n<td><span style=\"font-weight: 400\">Sem suporte. Deve ser tratado no aplicativo<\/span><\/td>\n<td><span style=\"font-weight: 400\">Trabalhou com o uso de outros JOINs.<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><a href=\"https:\/\/docs.couchbase.com\/server\/6.5\/n1ql\/n1ql-language-reference\/grant.html\">CONCESS\u00c3O e REVOGA\u00c7\u00c3O<\/a><\/p>\n<pre class=\"theme:vs2012-black font-size:17 line-height:20 whitespace-before:2 lang:default decode:true\">\/* MongoDB *\/\r\ndb.grantPrivilegesToRole()\r\ndb.revokePrivilegesFromRole()\r\n\r\n\/* Couchbase: N1QL *\/\r\nGRANT query_select ON orders, customers TO bill, linda;\r\nREVOKE query_update ON `travel-sample` FROM debby\r\n<\/pre>\n<h4><span style=\"color: #0000ff\"><strong><a style=\"color: #0000ff\" href=\"https:\/\/docs.couchbase.com\/server\/6.5\/n1ql\/n1ql-language-reference\/createindex.html\">\u00cdNDICES<\/a><\/strong><\/span><\/h4>\n<p>Abaixo est\u00e1 uma vis\u00e3o geral dos recursos de \u00edndice do MongoDB e do Couchbase. Ambos t\u00eam uma variedade de \u00edndices.  Os tipos e o uso do \u00edndice do Couchbase est\u00e3o bem documentados no artigo: <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/create-right-index-get-right-performance\/\">Crie o \u00edndice certo e obtenha o desempenho certo<\/a>. Al\u00e9m disso, o Couchbase tem um consultor de \u00edndice integrado para<a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-language-reference\/advise.html\"> a declara\u00e7\u00e3o individual<\/a> bem como o <a href=\"https:\/\/docs.couchbase.com\/server\/6.5\/n1ql\/n1ql-language-reference\/advisor.html\">carga de trabalho<\/a> e, al\u00e9m disso, tem o <a href=\"https:\/\/index-advisor.couchbase.com\/indexadvisor\/#1\">Servi\u00e7o de consultoria de \u00edndices<\/a> que \u00e9 atualizado mensalmente.<\/p>\n<table>\n<tbody>\n<tr>\n<td><b>Tipo de \u00edndice<\/b><\/td>\n<td><b>MongoDB<\/b><\/td>\n<td><b>Couchbase\u00a0<\/b><\/td>\n<\/tr>\n<tr>\n<td><b>\u00cdndice prim\u00e1rio<\/b><\/td>\n<td><b>Varreduras de tabela, \u00edndice prim\u00e1rio<\/b><\/td>\n<td><b>\u00cdndice prim\u00e1rio<\/b><\/td>\n<\/tr>\n<tr>\n<td><b>\u00cdndice secund\u00e1rio<\/b><\/td>\n<td><b>\u00cdndice secund\u00e1rio<\/b><\/td>\n<td><b>\u00cdndice secund\u00e1rio<\/b><\/td>\n<\/tr>\n<tr>\n<td><b>\u00cdndice composto<\/b><\/td>\n<td><b>\u00cdndice composto<\/b><\/td>\n<td><b>\u00cdndice composto<\/b><\/td>\n<\/tr>\n<tr>\n<td><b>\u00cdndice funcional\u00a0<\/b><\/p>\n<p><b>(\u00cdndice de Express\u00e3o)<\/b><\/td>\n<td><b>N\u00e3o dispon\u00edvel<\/b><\/td>\n<td><b>\u00cdndice Funcional, \u00cdndice de Express\u00e3o<\/b><\/td>\n<\/tr>\n<tr>\n<td><b>\u00cdndice parcial<\/b><\/td>\n<td><b>N\u00e3o dispon\u00edvel<\/b><\/td>\n<td><b>\u00cdndice parcial<\/b><\/td>\n<\/tr>\n<tr>\n<td><b>\u00cdndice particionado de intervalo<\/b><\/td>\n<td><b>\u00cdndice particionado por intervalo, Intervalo, Lista, Ref, Hash, \u00cdndice particionado h\u00edbrido<\/b><\/td>\n<td><b>Intervalo manual particionado usando o \u00cdndice parcial<\/b><\/td>\n<\/tr>\n<tr>\n<td><b>\u00cdndice ARRAY<\/b><\/td>\n<td><b>1. \u00cdndice baseado em B-Tree com uma chave de matriz por \u00edndice.<\/b><\/p>\n<p><b>2. A chave de uma matriz pode ser simples ou composta (v\u00e1rias chaves).<\/b><\/td>\n<td><b>1. \u00cdndice baseado em \u00e1rvore B com uma chave de matriz por \u00edndice.<\/b><\/p>\n<p><b>2. A chave da matriz pode ser composta<\/b><\/p>\n<p><b>3.  Usando SEARCH(): \u00cdndice baseado em \u00e1rvore invertida com um n\u00famero ilimitado de chaves de matriz por \u00edndice.<\/b><\/td>\n<\/tr>\n<tr>\n<td><b>\u00cdndice de matriz em express\u00f5es<\/b><\/td>\n<td><b>N\u00e3o dispon\u00edvel<\/b><\/td>\n<td><span style=\"font-weight: 400\">Sim<\/span><\/td>\n<\/tr>\n<tr>\n<td><b>Objetos<\/b><\/td>\n<td><b>Sim<\/b><\/td>\n<td><b>Sim<\/b><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4><span style=\"color: #0000ff\"><a style=\"color: #0000ff\" href=\"https:\/\/docs.couchbase.com\/server\/current\/fts\/full-text-intro.html\"><strong>PESQUISA DE TEXTO COMPLETO<\/strong><\/a><\/span><\/h4>\n<p>O produto MongoDB tem <a href=\"https:\/\/docs.mongodb.com\/manual\/text-search\/\">pesquisa de texto<\/a> e agora est\u00e1 experimentando a integra\u00e7\u00e3o do Lucene em seu servi\u00e7o Atlas por meio do <a href=\"https:\/\/docs.atlas.mongodb.com\/reference\/atlas-search\/query-syntax\/\">$searchbeta<\/a> recurso. O Couchbase tem um recurso <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/full-text-search-indexing-best-practices-by-use-case\/\">indexa\u00e7\u00e3o de pesquisa de texto completo<\/a> que pode ser executado em seu laptop e no cluster.  Novamente, temos um artigo detalhado comparando o <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/searching-json-comparing-text-search-in-couchbase-and-mongodb\/\">pesquisa de texto, recurso por recurso<\/a>com exemplos.  O Couchbase 6.5 integra <a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-language-reference\/searchfun.html\">o FTS com N1QL<\/a>tornando a consulta ainda mais complexa.<\/p>\n<h4><span style=\"color: #0000ff\"><strong>OTIMIZADOR<\/strong><\/span><\/h4>\n<p>Um otimizador de consultas tenta reescrever a consulta para melhor otimiza\u00e7\u00e3o, escolher o \u00edndice mais adequado, decidir o pushdown do \u00edndice, a ordem de jun\u00e7\u00e3o, o tipo de jun\u00e7\u00e3o e criar um plano que o mecanismo possa executar. Cada banco de dados tem um otimizador especializado que entende os recursos e as peculiaridades do mecanismo.<\/p>\n<table>\n<tbody>\n<tr>\n<td><b>Recurso<\/b><\/td>\n<td><b>MongoDB<\/b><\/td>\n<td><b>Couchbase\u00a0<\/b><\/td>\n<\/tr>\n<tr>\n<td><b>Tipo de otimizador<\/b><\/td>\n<td><a href=\"https:\/\/docs.mongodb.com\/manual\/core\/query-plans\/\"><b>Consulta baseada em forma <\/b><\/a><\/td>\n<td><a href=\"https:\/\/dzone.com\/articles\/a-deep-dive-into-couchbase-n1ql-query-optimization\"><b>Baseado em regras<\/b><\/a><\/p>\n<p><a href=\"https:\/\/docs.couchbase.com\/server\/6.5\/n1ql\/n1ql-language-reference\/cost-based-optimizer.html\"><b>Baseado em custos (visualiza\u00e7\u00e3o em 6.5)<\/b><\/a><\/td>\n<\/tr>\n<tr>\n<td><b>Sele\u00e7\u00e3o de \u00edndice<\/b><\/td>\n<td><a href=\"https:\/\/docs.mongodb.com\/manual\/core\/query-plans\/\"><b>Consulta baseada em forma <\/b><\/a><\/td>\n<td><b>Baseado em regras<\/b><\/p>\n<p><b>Baseado em custos (visualiza\u00e7\u00e3o em 6.5)<\/b><\/td>\n<\/tr>\n<tr>\n<td><b>Reescrita de consulta<\/b><\/td>\n<td><b>N\u00e3o<\/b><\/td>\n<td><b>Sim, limitado.<\/b><\/td>\n<\/tr>\n<tr>\n<td><b>JOIN Order<\/b><\/td>\n<td><b>Como est\u00e1 escrito, procedimento que usa a estrutura de agrega\u00e7\u00e3o<\/b><\/td>\n<td><b>Especificado pelo usu\u00e1rio (da esquerda para a direita)<\/b><\/td>\n<\/tr>\n<tr>\n<td><b>Tipo de associa\u00e7\u00e3o<\/b><\/td>\n<td><b>Loop aninhado<\/b><\/td>\n<td><b>Loop aninhado<\/b><\/p>\n<p><b>Jun\u00e7\u00e3o de Hash<\/b><\/td>\n<\/tr>\n<tr>\n<td><b>DICAS<\/b><\/td>\n<td><b>Sim. $hint<\/b><\/td>\n<td><b>Sim. <\/b><\/p>\n<p><b>USAR \u00cdNDICE, USAR HASH<\/b><\/td>\n<\/tr>\n<tr>\n<td><b>EXPLICAR<\/b><\/td>\n<td><b>1TP4Explicar<\/b><\/td>\n<td><b>EXPLICAR<\/b><\/td>\n<\/tr>\n<tr>\n<td><b>Explica\u00e7\u00e3o visual<\/b><\/td>\n<td><b>Sim<\/b><\/td>\n<td><b>Sim.<\/b><\/td>\n<\/tr>\n<tr>\n<td><b>Cria\u00e7\u00e3o de perfil de consulta<\/b><\/td>\n<td><b>Sim<\/b><\/td>\n<td><b>sim<\/b><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4><span style=\"color: #0000ff\"><strong>TRANSA\u00c7\u00d5ES<\/strong><\/span><\/h4>\n<p>Os bancos de dados NoSQL foram inventados para evitar SQL e transa\u00e7\u00f5es. Com o tempo, cada banco de dados est\u00e1 adicionando um ou outro, ou ambos!  O MongoDB adicionou o <a href=\"https:\/\/docs.mongodb.com\/manual\/core\/transactions\/\">transa\u00e7\u00f5es com v\u00e1rios documentos<\/a> com isolamento de snapshot. O Couchbase adicionou o <a href=\"https:\/\/docs.couchbase.com\/java-sdk\/3.0\/howtos\/distributed-acid-transactions-from-the-sdk.html\">transa\u00e7\u00f5es com v\u00e1rios documentos<\/a> com isolamento de confirma\u00e7\u00e3o de leitura. As transa\u00e7\u00f5es de v\u00e1rios documentos ainda n\u00e3o s\u00e3o compat\u00edveis com o N1QL.<\/p>\n<table>\n<tbody>\n<tr>\n<td><b>Recurso<\/b><\/td>\n<td><b>MongoDB<\/b><\/td>\n<td><b>Couchbase\u00a0<\/b><\/td>\n<\/tr>\n<tr>\n<td><b>Atualiza\u00e7\u00f5es do \u00edndice<\/b><\/td>\n<td><b>Os \u00edndices s\u00e3o mantidos de forma s\u00edncrona<\/b><\/td>\n<td><b>Os \u00edndices s\u00e3o mantidos de forma ass\u00edncrona<\/b><\/td>\n<\/tr>\n<tr>\n<td><b>Atomicidade<\/b><\/td>\n<td><b>Documento \u00fanico<\/b><\/p>\n<p><b>Multi-documento (em 4.2)<\/b><\/td>\n<td><b>Documento \u00fanico<\/b><\/p>\n<p><b>Multi-documento (na vers\u00e3o 6.5)<\/b><\/td>\n<\/tr>\n<tr>\n<td><b>Consist\u00eancia<\/b><\/td>\n<td><strong>Os dados e os \u00edndices s\u00e3o atualizados de forma s\u00edncrona. Por padr\u00e3o, leitura suja nos dados e \u00edndices.\u00a0<\/strong><\/td>\n<td><b>O acesso aos dados \u00e9 sempre consistente<\/b><\/p>\n<p><b>Os \u00edndices t\u00eam v\u00e1rios n\u00edveis de consist\u00eancia (UNBOUNDED, AT_PLUS, REQUEST_PLUS)<\/b><\/td>\n<\/tr>\n<tr>\n<td><b>Isolamento<\/b><\/td>\n<td><b>Padr\u00e3o: Leitura suja<\/b><\/p>\n<p><b>Transa\u00e7\u00e3o: Isolamento de instant\u00e2neos<\/b><\/td>\n<td><b>Bloqueio otimista com verifica\u00e7\u00e3o de CAS<\/b><\/p>\n<p><b>Transa\u00e7\u00f5es: Isolamento at\u00f4mico monot\u00f4nico<\/b><\/td>\n<\/tr>\n<tr>\n<td><b>Durabilidade<\/b><\/td>\n<td><b>Dur\u00e1vel com op\u00e7\u00e3o de maioria de grava\u00e7\u00e3o.<\/b><\/td>\n<td><b>Dur\u00e1vel com confirma\u00e7\u00e3o ap\u00f3s a replica\u00e7\u00e3o<\/b><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4><span style=\"color: #0000ff\"><strong>ANAL\u00cdTICA<\/strong><\/span><\/h4>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/products\/analytics\/\">An\u00e1lise do Couchbase<\/a> foi projetado para fornecer insights sobre seus dados JSON sem ETL - NoETL para NoSQL. Os dados JSON no armazenamento de dados de valor-chave s\u00e3o copiados para o servi\u00e7o de an\u00e1lise que distribui os dados em seu armazenamento.  O servi\u00e7o de consulta e o servi\u00e7o de dados do Couchbase foram projetados para lidar com um grande n\u00famero de opera\u00e7\u00f5es ou consultas simult\u00e2neas para executar os aplicativos. O servi\u00e7o de an\u00e1lise foi projetado para analisar um grande n\u00famero de documentos para fornecer insights sobre os neg\u00f3cios. Em termos tradicionais, o servi\u00e7o de an\u00e1lise \u00e9 projetado para OLAP, e os demais s\u00e3o projetados para OLTP.  O MongoDB n\u00e3o tem um servi\u00e7o de an\u00e1lise equivalente.  Voc\u00ea teria que sobrecarregar seu cluster existente com cargas de trabalho OLTP e OLAP.  Como voc\u00ea aprender\u00e1, n\u00e3o existe almo\u00e7o gr\u00e1tis.  As grandes varreduras necess\u00e1rias para a carga de trabalho de an\u00e1lise afetar\u00e3o as lat\u00eancias de suas consultas OLTP. Em seguida, voc\u00ea come\u00e7a a alocar novos n\u00f3s para suas c\u00f3pias secund\u00e1rias e terci\u00e1rias dos dados nos quais voc\u00ea pode fazer a carga de trabalho de leitura.  O que acontecer\u00e1 ou dever\u00e1 acontecer em um failover?  O secund\u00e1rio assume o controle, mas novamente afeta sua carga de trabalho OLTP.<\/p>\n<p>H\u00e1 um segundo motivo para um servi\u00e7o distinto: o processamento de consultas para an\u00e1lise requer uma abordagem diferente das consultas OLTP.  H\u00e1 um grande conjunto de recursos para voc\u00ea aprender sobre esse servi\u00e7o, incluindo o livro de Don Chamberlin, co-inventor do SQL.<\/p>\n<ol>\n<li>SQL++ para usu\u00e1rios de SQL: UM TUTORIAL:\u00a0 <a href=\"https:\/\/resources.couchbase.com\/analytics\/sql-book\">https:\/\/resources.couchbase.com\/analytics\/sql-book<\/a><\/li>\n<li>Couchbase Analytics: Sob o cap\u00f4 - Connect Silicon Valley 2018: <a href=\"https:\/\/www.youtube.com\/watch?v=1dN11TUj58c\">https:\/\/www.youtube.com\/watch?v=1dN11TUj58c<\/a><\/li>\n<li>De SQL para NoSQL\n<ul>\n<li>Al\u00e9m das linhas e colunas: A quarta vez \u00e9 o charme - Couchbase Connect 2016: <a href=\"https:\/\/www.youtube.com\/watch?v=HVJNxgLKtbo\">https:\/\/www.youtube.com\/watch?v=HVJNxgLKtbo<\/a><\/li>\n<\/ul>\n<\/li>\n<li>NoETL para NoSQL - An\u00e1lise em tempo real com o Couchbase:\u00a0<a href=\"https:\/\/www.youtube.com\/watch?v=MIno71jTOUI\">https:\/\/www.youtube.com\/watch?v=MIno71jTOUI<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/n1ql-to-query-or-to-analyze\/\">N1QL: Consultar ou analisar?<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/part-2-n1ql-to-query-or-to-analyze\/\">Parte 2: N1QL: Consultar ou analisar?<\/a><\/li>\n<\/ol>\n<h4><span style=\"color: #0000ff\"><strong>Resumo: Parte dois<\/strong><\/span><\/h4>\n<p>Os bancos de dados s\u00e3o extraordinariamente \u00fateis.  Eles t\u00eam nuances e tamb\u00e9m s\u00e3o pegajosos.  Eles s\u00e3o essenciais para a civiliza\u00e7\u00e3o.  Os sum\u00e9rios inventaram a escrita para o processamento de transa\u00e7\u00f5es: criar um banco de dados a partir de t\u00e1buas de argila para manter o controle de impostos, terras, ouro e descobrir informa\u00e7\u00f5es. Haver\u00e1 bancos de dados para sempre. Cada banco de dados \u00e9 diferente - sejam eles bancos de dados SQL ou bancos de dados NoSQL. Nem todos os bancos de dados SQL s\u00e3o iguais. Nem todos os bancos de dados NoSQL s\u00e3o iguais. A compreens\u00e3o dos diferentes bancos de dados aumenta a flexibilidade e a efic\u00e1cia de sua organiza\u00e7\u00e3o.<\/p>\n<h4><span style=\"color: #0000ff\"><strong>RECURSOS: Parte Dois<\/strong><\/span><\/h4>\n<ol>\n<li>SQL++ para usu\u00e1rios de SQL: UM TUTORIAL:\u00a0 <a href=\"https:\/\/resources.couchbase.com\/analytics\/sql-book\">https:\/\/resources.couchbase.com\/analytics\/sql-book<\/a><\/li>\n<li>N1QL Guias pr\u00e1ticos\n<ul>\n<li>Segunda edi\u00e7\u00e3o: <a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/10\/N1QL-A-Practical-Guide-2nd-Edition.pdf\">https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/10\/N1QL-A-Practical-Guide-2nd-Edition.pdf<\/a><\/li>\n<li>5,5 recursos: <a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/04\/COU_261-Couchbase-5.5-N1QL-Booklet-WEB.pdf\">https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/04\/COU_261-Couchbase-5.5-N1QL-Booklet-WEB.pdf<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Blogs do Couchbase 6.5: <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/tag\/6.5\/\">https:\/\/www.couchbase.com\/blog\/tag\/6.5\/<\/a><\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>","protected":false},"excerpt":{"rendered":"<p>Six thousand years ago, the Sumerians invented writing for transaction processing &#8212; Gray &amp; Reuter By any measure, MongoDB is a popular document-oriented JSON database. In the last dozen years, it has grown from its humble beginnings of a single [&hellip;]<\/p>","protected":false},"author":55,"featured_media":10440,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1815,2294,1821,1816,2165,1812],"tags":[1261,1309,1725,2221],"ppma_author":[8929],"class_list":["post-8478","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices-and-tutorials","category-analytics","category-couchbase-architecture","category-couchbase-server","category-full-text-search","category-n1ql-query","tag-json","tag-mongodb","tag-nosql-database","tag-transactions"],"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>Couchbase Intro for MongoDB Developers and NoSQL Experts - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"Many start with MongoDB to learn NoSQL and flexible JSON schema, many choose Couchbase for performance, scale, and SQL. Learn the differences in this post.\" \/>\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\/introduction-to-couchbase-for-mongodb-developers-and-experts\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Couchbase Intro for MongoDB Developers and NoSQL Experts\" \/>\n<meta property=\"og:description\" content=\"Many start with MongoDB to learn NoSQL and flexible JSON schema, many choose Couchbase for performance, scale, and SQL. Learn the differences in this post.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/introduction-to-couchbase-for-mongodb-developers-and-experts\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-04-25T19:51:59+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T06:42:43+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/monarch2-2.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"800\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Keshav Murthy\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@rkeshavmurthy\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Keshav Murthy\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"17 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/introduction-to-couchbase-for-mongodb-developers-and-experts\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/introduction-to-couchbase-for-mongodb-developers-and-experts\/\"},\"author\":{\"name\":\"Keshav Murthy\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c261644262bf98e146372fe647682636\"},\"headline\":\"Couchbase Intro for MongoDB Developers and NoSQL Experts\",\"datePublished\":\"2020-04-25T19:51:59+00:00\",\"dateModified\":\"2025-06-14T06:42:43+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/introduction-to-couchbase-for-mongodb-developers-and-experts\/\"},\"wordCount\":3558,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/introduction-to-couchbase-for-mongodb-developers-and-experts\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/monarch2-2.jpg\",\"keywords\":[\"JSON\",\"mongodb\",\"NoSQL Database\",\"transactions\"],\"articleSection\":[\"Best Practices and Tutorials\",\"Couchbase Analytics\",\"Couchbase Architecture\",\"Couchbase Server\",\"Full-Text Search\",\"SQL++ \/ N1QL Query\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/introduction-to-couchbase-for-mongodb-developers-and-experts\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/introduction-to-couchbase-for-mongodb-developers-and-experts\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/introduction-to-couchbase-for-mongodb-developers-and-experts\/\",\"name\":\"Couchbase Intro for MongoDB Developers and NoSQL Experts - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/introduction-to-couchbase-for-mongodb-developers-and-experts\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/introduction-to-couchbase-for-mongodb-developers-and-experts\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/monarch2-2.jpg\",\"datePublished\":\"2020-04-25T19:51:59+00:00\",\"dateModified\":\"2025-06-14T06:42:43+00:00\",\"description\":\"Many start with MongoDB to learn NoSQL and flexible JSON schema, many choose Couchbase for performance, scale, and SQL. Learn the differences in this post.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/introduction-to-couchbase-for-mongodb-developers-and-experts\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/introduction-to-couchbase-for-mongodb-developers-and-experts\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/introduction-to-couchbase-for-mongodb-developers-and-experts\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/monarch2-2.jpg\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/monarch2-2.jpg\",\"width\":1200,\"height\":800},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/introduction-to-couchbase-for-mongodb-developers-and-experts\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Couchbase Intro for MongoDB Developers and NoSQL Experts\"}]},{\"@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\/c261644262bf98e146372fe647682636\",\"name\":\"Keshav Murthy\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/4e51d72fc07c662aa791316deafffac4\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/af74df754db27152971d0aed2f323ead5a1f9fe5afd0209af91e12e784451224?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/af74df754db27152971d0aed2f323ead5a1f9fe5afd0209af91e12e784451224?s=96&d=mm&r=g\",\"caption\":\"Keshav Murthy\"},\"description\":\"Keshav Murthy is a Vice President at Couchbase R&amp;D. Previously, he was at MapR, IBM, Informix, Sybase, with more than 20 years of experience in database design &amp; development. He lead the SQL and NoSQL R&amp;D team at IBM Informix. He has received two President's Club awards at Couchbase, two Outstanding Technical Achievement Awards at IBM. Keshav has a bachelor's degree in Computer Science and Engineering from the University of Mysore, India, and has received twenty four US patents.\",\"sameAs\":[\"https:\/\/blog.planetnosql.com\/\",\"https:\/\/x.com\/rkeshavmurthy\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/pt\/author\/keshav-murthy\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Couchbase Intro for MongoDB Developers and NoSQL Experts - The Couchbase Blog","description":"Muitos come\u00e7am com o MongoDB para aprender NoSQL e esquema JSON flex\u00edvel, muitos escolhem o Couchbase por causa do desempenho, da escala e do SQL. Conhe\u00e7a as diferen\u00e7as nesta postagem.","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\/introduction-to-couchbase-for-mongodb-developers-and-experts\/","og_locale":"pt_BR","og_type":"article","og_title":"Couchbase Intro for MongoDB Developers and NoSQL Experts","og_description":"Many start with MongoDB to learn NoSQL and flexible JSON schema, many choose Couchbase for performance, scale, and SQL. Learn the differences in this post.","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/introduction-to-couchbase-for-mongodb-developers-and-experts\/","og_site_name":"The Couchbase Blog","article_published_time":"2020-04-25T19:51:59+00:00","article_modified_time":"2025-06-14T06:42:43+00:00","og_image":[{"width":1200,"height":800,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/monarch2-2.jpg","type":"image\/jpeg"}],"author":"Keshav Murthy","twitter_card":"summary_large_image","twitter_creator":"@rkeshavmurthy","twitter_misc":{"Written by":"Keshav Murthy","Est. reading time":"17 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/introduction-to-couchbase-for-mongodb-developers-and-experts\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/introduction-to-couchbase-for-mongodb-developers-and-experts\/"},"author":{"name":"Keshav Murthy","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c261644262bf98e146372fe647682636"},"headline":"Couchbase Intro for MongoDB Developers and NoSQL Experts","datePublished":"2020-04-25T19:51:59+00:00","dateModified":"2025-06-14T06:42:43+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/introduction-to-couchbase-for-mongodb-developers-and-experts\/"},"wordCount":3558,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/introduction-to-couchbase-for-mongodb-developers-and-experts\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/monarch2-2.jpg","keywords":["JSON","mongodb","NoSQL Database","transactions"],"articleSection":["Best Practices and Tutorials","Couchbase Analytics","Couchbase Architecture","Couchbase Server","Full-Text Search","SQL++ \/ N1QL Query"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/introduction-to-couchbase-for-mongodb-developers-and-experts\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/introduction-to-couchbase-for-mongodb-developers-and-experts\/","url":"https:\/\/www.couchbase.com\/blog\/introduction-to-couchbase-for-mongodb-developers-and-experts\/","name":"Couchbase Intro for MongoDB Developers and NoSQL Experts - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/introduction-to-couchbase-for-mongodb-developers-and-experts\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/introduction-to-couchbase-for-mongodb-developers-and-experts\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/monarch2-2.jpg","datePublished":"2020-04-25T19:51:59+00:00","dateModified":"2025-06-14T06:42:43+00:00","description":"Muitos come\u00e7am com o MongoDB para aprender NoSQL e esquema JSON flex\u00edvel, muitos escolhem o Couchbase por causa do desempenho, da escala e do SQL. Conhe\u00e7a as diferen\u00e7as nesta postagem.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/introduction-to-couchbase-for-mongodb-developers-and-experts\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/introduction-to-couchbase-for-mongodb-developers-and-experts\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/introduction-to-couchbase-for-mongodb-developers-and-experts\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/monarch2-2.jpg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/monarch2-2.jpg","width":1200,"height":800},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/introduction-to-couchbase-for-mongodb-developers-and-experts\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Couchbase Intro for MongoDB Developers and NoSQL Experts"}]},{"@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\/c261644262bf98e146372fe647682636","name":"Keshav Murthy","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/4e51d72fc07c662aa791316deafffac4","url":"https:\/\/secure.gravatar.com\/avatar\/af74df754db27152971d0aed2f323ead5a1f9fe5afd0209af91e12e784451224?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/af74df754db27152971d0aed2f323ead5a1f9fe5afd0209af91e12e784451224?s=96&d=mm&r=g","caption":"Keshav Murthy"},"description":"Keshav Murthy is a Vice President at Couchbase R&amp;D. Previously, he was at MapR, IBM, Informix, Sybase, with more than 20 years of experience in database design &amp; development. He lead the SQL and NoSQL R&amp;D team at IBM Informix. He has received two President's Club awards at Couchbase, two Outstanding Technical Achievement Awards at IBM. Keshav has a bachelor's degree in Computer Science and Engineering from the University of Mysore, India, and has received twenty four US patents.","sameAs":["https:\/\/blog.planetnosql.com\/","https:\/\/x.com\/rkeshavmurthy"],"url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/keshav-murthy\/"}]}},"authors":[{"term_id":8929,"user_id":55,"is_guest":0,"slug":"keshav-murthy","display_name":"Keshav Murthy","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/af74df754db27152971d0aed2f323ead5a1f9fe5afd0209af91e12e784451224?s=96&d=mm&r=g","author_category":"","last_name":"Murthy","first_name":"Keshav","job_title":"","user_url":"https:\/\/blog.planetnosql.com\/","description":"Keshav Murthy \u00e9 vice-presidente de P&amp;D da Couchbase. Anteriormente, ele trabalhou na MapR, IBM, Informix e Sybase, com mais de 20 anos de experi\u00eancia em design e desenvolvimento de bancos de dados. Ele liderou a equipe de P&amp;D de SQL e NoSQL na IBM Informix. Recebeu dois pr\u00eamios President's Club na Couchbase e dois Outstanding Technical Achievement Awards na IBM. Keshav \u00e9 bacharel em Ci\u00eancia da Computa\u00e7\u00e3o e Engenharia pela Universidade de Mysore, \u00cdndia, det\u00e9m dez patentes nos EUA e tem tr\u00eas patentes pendentes nos EUA."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/8478","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\/55"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=8478"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/8478\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/10440"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=8478"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=8478"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=8478"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=8478"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}