{"id":706,"date":"2010-04-19T00:05:54","date_gmt":"2010-04-19T03:05:54","guid":{"rendered":"https:\/\/devkico.itexto.com.br\/?p=706"},"modified":"2010-04-19T00:05:54","modified_gmt":"2010-04-19T03:05:54","slug":"primeiros-passos-nosql-com-mongodb-manipulando-documentos","status":"publish","type":"post","link":"https:\/\/devkico.itexto.com.br\/?p=706","title":{"rendered":"Primeiros passos NoSQL com MongoDB: manipulando documentos"},"content":{"rendered":"<p><a href=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2010\/04\/logo-mongodb-onwhite.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-medium wp-image-683\" style=\"margin: 10px;\" title=\"logo-mongodb-onwhite\" src=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2010\/04\/logo-mongodb-onwhite-300x100.png\" alt=\"\" width=\"300\" height=\"100\" srcset=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2010\/04\/logo-mongodb-onwhite-300x100.png 300w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2010\/04\/logo-mongodb-onwhite-1024x341.png 1024w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2010\/04\/logo-mongodb-onwhite.png 1500w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a>Continuando meu <a href=\"https:\/\/devkico.itexto.com.br\/?p=682\">post anterior<\/a> sobre o assunto, \u00e9 hora de colocarmos a teoria em pr\u00e1tica. Meu objetivo agora \u00e9 expor o b\u00e1sico sobre o funcionamento e opera\u00e7\u00e3o do MongoDB para que, em seguida, possamos aplicar este SGBD a alguma linguagem de programa\u00e7\u00e3o (muito prov\u00e1velmente usarei o Groovy, que cai como uma luva).<\/p>\n<h2>Instalando o Servidor<\/h2>\n<p>De todos os SGBDs n\u00e3o relacionais que experimentei, aquele com qual tive mais facilidade para trabalhar foi o MongoDB por duas raz\u00f5es: ele \u00e9 realmente simples e a documenta\u00e7\u00e3o \u00e9 excelente. A facilidade do sistema se apresenta no primeiro contato que temos com a criatura: instalando-o.<\/p>\n<p>Simples e r\u00e1pido: baixe a vers\u00e3o que se adequa ao seu sistema operacional neste <a href=\"http:\/\/www.mongodb.org\/display\/DOCS\/Downloads\" target=\"_blank\">link<\/a>. Descompacte-o em um diret\u00f3rio de sua escolha e o bicho est\u00e1 quase pronto para ser usado.<\/p>\n<p>Para iniciar o servidor, voc\u00ea dever\u00e1 executar o programa <em>mongod<\/em>, presente no diret\u00f3rio $MONGODB\/bin (entenda $MONGODB como sendo o diret\u00f3rio aonde voc\u00ea descompactou a sua distribui\u00e7\u00e3o do programa). Voc\u00ea ser\u00e1 saudado por uma nada simp\u00e1tica mensagem de erro na qual encontrar\u00e1 um texto similar ao abaixo:<\/p>\n<p><span style=\"color: #c0c0c0;\">Thu Apr 15 21:32:54 Assertion: 10296:dbpath (\/data\/db\/) does not exist<\/span><\/p>\n<p>Isto ocorre porque por default o MongoDB armazena seus bancos de dados no diret\u00f3rio \/data\/db (C:\\data\\db se estiver usando Windows). A solu\u00e7\u00e3o \u00e9 simples: ou voc\u00ea cria este diret\u00f3rio ou inicia o processo mongod com o par\u00e2metro -dbpath como no exemplo abaixo:<\/p>\n<p style=\"text-align: center;\"><span style=\"color: #808080;\">$mongodb\/bin\/mongod -dbpath=\/home\/kicolobo\/mongodb<\/span><\/p>\n<p>Neste caso, estou instruindo o servidor a buscar pelos arquivos de banco de dados dentro do diret\u00f3rio \/home\/kicolobo\/mongodb<\/p>\n<p>Nota: \u00e9 importante mencionar que se eu inicio o MongoDB usando a abrevia\u00e7\u00e3o ~ para o meu diret\u00f3rio home (por exemplo: ~\/mongodb) o processo mongod n\u00e3o identifica o diret\u00f3rio, retornando aquela mesma entediante mensagem de erro (ao menos no Mac OS X).<\/p>\n<p><strong>Observa\u00e7\u00e3o importante: <\/strong>caso voc\u00ea esteja usando uma vers\u00e3o de 32 bits do MongoDB, esta possuir\u00e1 o tamanho dos bancos de dados limitados a no m\u00e1ximo <strong><span style=\"color: #ff0000;\">2 Gb<\/span><\/strong>.<\/p>\n<h3>Conectando-se<\/h3>\n<p>O cliente nativo do MongoDB \u00e9 o programa <em>mongo<\/em>, localizado no diret\u00f3rio $MONGODB\/bin. Com o servidor em execu\u00e7\u00e3o, caso voc\u00ea inicie este aplicativo autom\u00e1ticamente j\u00e1 estar\u00e1 logado no servidor default, que \u00e9 o local usando a porta 27017. N\u00e3o \u00e9 necess\u00e1rio prover um usu\u00e1rio (posso falar mais sobre gerenciamento de usu\u00e1rios em um post futuro no entanto). Ao iniciar o shell voc\u00ea ser\u00e1 saudado por um prompt similar ao exposto na imagem abaixo:<\/p>\n<p><a href=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2010\/04\/mongoprompt.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-707\" title=\"mongoprompt\" src=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2010\/04\/mongoprompt-300x113.png\" alt=\"\" width=\"300\" height=\"113\" srcset=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2010\/04\/mongoprompt-300x113.png 300w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2010\/04\/mongoprompt.png 443w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Neste podemos fazer basicamente tudo o que quisermos com o MongoDB. Por default, estamos conectados ao banco de dados <em>test<\/em>. Para mudar de banco de dados, basta usar o comando <em>use<\/em> seguido do nome do banco de dados. Por exemplo <em>use kico;<\/em>.<\/p>\n<h2>Manipulando dados<\/h2>\n<h3><strong>Inserindo<\/strong><\/h3>\n<p>No MongoDB, cada banco de dados \u00e9 composto por um conjunto de cole\u00e7\u00f5es. O c\u00f3digo abaixo, apesar de muito simples nos diz muita coisa:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\n\r\n&gt; use kico\r\nswitched to db kico\r\n&gt; a = {posicao:1, descricao:&quot;Primeira letra do alfabeto&quot;}\r\n{ &quot;posicao&quot; : 1, &quot;descricao&quot; : &quot;Primeira letra do alfabeto&quot; }\r\n&gt; db.alfabeto.save(a)\r\n&gt; a\r\n{\r\n &quot;posicao&quot; : 1,\r\n &quot;descricao&quot; : &quot;Primeira letra do alfabeto&quot;,\r\n &quot;_id&quot; : ObjectId(&quot;4bc7b65da5ec5e132c1a53a1&quot;)\r\n}\r\n<\/pre>\n<p>A primeira coisa que fiz foi selecionar o banco de dados <em>kico<\/em> usando o comando <em>use<\/em>. Se este banco de dados n\u00e3o existisse, o MongoDB o criaria automaticamente para n\u00f3s.<\/p>\n<p>Em seguida, criei uma vari\u00e1vel chamada <em>a<\/em>, cujo valor \u00e9 uma estrutura no formato JSON composta por dois atributos: <em>posicao<\/em> e <em>descricao<\/em>. Lembre-se que estamos lidando aqui com um SGBD <em>schemaless<\/em>: sendo assim posso criar documentos com o formato que eu sonhar.<\/p>\n<div style=\"background: #dedede;\">(Por possuir um shell baseado em JavaScript,\u00a0\u00e9 poss\u00edvel escrever scripts e us\u00e1-los para tarefas de manuten\u00e7\u00e3o do banco. Trata-se de um recurso fant\u00e1stico que, um dia, pretendo abordar com maiores detalhes neste blog.)<\/div>\n<p>Para inserir o meu documento <em>a<\/em> em uma cole\u00e7\u00e3o, usei o objeto <em>db<\/em>, que aponta para o banco de dados atualmente selecionado. A sintaxe para inclus\u00e3o de um registro \u00e9 simples:<\/p>\n<p style=\"text-align: center;\"><span style=\"color: #999999;\">db.[nome da cole\u00e7\u00e3o].save( objeto a ser salvo )<\/span><\/p>\n<p>No caso, estou incluindo o documento <em>a<\/em> dentro da cole\u00e7\u00e3o alfabeto. Assim como no caso do banco de dados, se esta cole\u00e7\u00e3o n\u00e3o existir no banco de dados atual, esta ser\u00e1 criada automaticamente no momento em que o primeiro documento for inserido.<\/p>\n<p>Claro, eu tamb\u00e9m poderia incluir um novo registro na cole\u00e7\u00e3o <em>alfabeto<\/em> tal como no exemplo abaixo:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">db.alfabeto.save({posicao:5, letra:&quot;e&quot;})<\/pre>\n<p>Finalmente, expus o conte\u00fado do documento <em>a <\/em>ap\u00f3s ter sido incluido na cole\u00e7\u00e3o. Observe a inclus\u00e3o de um novo atributo neste objeto: o <em>_id .<\/em>Como o pr\u00f3prio nome j\u00e1 diz, um identificador interno usado pelo MongoDB para diferenciar os objetos armazenados em nossas cole\u00e7\u00f5es. \u00c9 importante mencionar que este atributo s\u00f3 ser\u00e1 criado pelo MongoDB caso ainda n\u00e3o exista na estrutura a ser armazenada. Sendo assim, voc\u00ea \u00e9 livre para criar seus pr\u00f3prios identificadores se quiser.<\/p>\n<h3>Editando e excluindo<\/h3>\n<p>Editar um registro tamb\u00e9m \u00e9 f\u00e1cil. Novamente, vamos analisar um c\u00f3digo bem simples que nos dir\u00e1 bastante coisa:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\n\r\ndocumento = db.alfabeto.findOne({posicao:1})\r\ndocumento.bobagem = &quot;Veja, estou incluindo um novo atributo completamente in\u00fatil!&quot;\r\ndb.alfabeto.save(documento)\r\ndb.alfabeto.remove(documento)\r\n\r\n<\/pre>\n<p>O primeiro passo foi usar o m\u00e9todo <em>findOne<\/em> presente na nossa cole\u00e7\u00e3o <em>alfabeto<\/em>. Este recebe como par\u00e2metro um fragmento de documento e, como o pr\u00f3prio nome j\u00e1 nos diz, retorna um \u00fanico resultado para n\u00f3s.<\/p>\n<p>Dai pra frente \u00e9 simples: adiciono um novo atributo ao nosso documento e em seguida o persisto novamente na cole\u00e7\u00e3o usando o mesmo m\u00e9todo save() que vimos anteriormente. A diferen\u00e7a \u00e9 que aqui ser\u00e1 feita uma substitui\u00e7\u00e3o, visto que o documento em quest\u00e3o j\u00e1 possui um atributo <em>_id.<\/em><\/p>\n<p><strong>Nota importante:<\/strong> voc\u00ea pode dar o nome que sonhar para um atributo, por\u00e9m duas regras devem ser satisfeitas: O nome do atributo n\u00e3o deve come\u00e7ar com o caractere $ e o caractere &#8216;.&#8217; <strong>jamais<\/strong> poder\u00e1 ser incluido.<\/p>\n<h2>Continuando<\/h2>\n<p>No pr\u00f3ximo post (que pretendo publicar nesta semana) vou mostrar como fazer consultas no MongoDB. N\u00e3o inclui este conte\u00fado agora porque tornaria este post gigantesco e n\u00e3o trataria com o detalhamento que desejo o assunto.<\/p>\n<p>Sendo assim, aguardem pelo pr\u00f3ximo post sobre o assunto. At\u00e9 l\u00e1!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Continuando meu post anterior sobre o assunto, \u00e9 hora de colocarmos a teoria em pr\u00e1tica. Meu objetivo agora \u00e9 expor o b\u00e1sico sobre o funcionamento e opera\u00e7\u00e3o do MongoDB para que, em seguida, possamos aplicar este SGBD a alguma linguagem de programa\u00e7\u00e3o (muito prov\u00e1velmente usarei o Groovy, que cai como uma luva). Instalando o Servidor [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""}},"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[54,1],"tags":[55,70],"class_list":["post-706","post","type-post","status-publish","format-standard","hentry","category-nosql","category-uncategorized","tag-mongodb","tag-nosql"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Primeiros passos NoSQL com MongoDB: manipulando documentos - \/dev\/Kico<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/devkico.itexto.com.br\/?p=706\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Primeiros passos NoSQL com MongoDB: manipulando documentos - \/dev\/Kico\" \/>\n<meta property=\"og:description\" content=\"Continuando meu post anterior sobre o assunto, \u00e9 hora de colocarmos a teoria em pr\u00e1tica. Meu objetivo agora \u00e9 expor o b\u00e1sico sobre o funcionamento e opera\u00e7\u00e3o do MongoDB para que, em seguida, possamos aplicar este SGBD a alguma linguagem de programa\u00e7\u00e3o (muito prov\u00e1velmente usarei o Groovy, que cai como uma luva). Instalando o Servidor [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/devkico.itexto.com.br\/?p=706\" \/>\n<meta property=\"og:site_name\" content=\"\/dev\/Kico\" \/>\n<meta property=\"article:published_time\" content=\"2010-04-19T03:05:54+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.itexto.net\/devkico\/wp-content\/uploads\/2010\/04\/logo-mongodb-onwhite-300x100.png\" \/>\n<meta name=\"author\" content=\"Kico (Henrique Lobo Weissmann)\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@loboweissmann\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kico (Henrique Lobo Weissmann)\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=706\",\"url\":\"https:\/\/devkico.itexto.com.br\/?p=706\",\"name\":\"Primeiros passos NoSQL com MongoDB: manipulando documentos - \/dev\/Kico\",\"isPartOf\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=706#primaryimage\"},\"image\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=706#primaryimage\"},\"thumbnailUrl\":\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2010\/04\/logo-mongodb-onwhite-300x100.png\",\"datePublished\":\"2010-04-19T03:05:54+00:00\",\"dateModified\":\"2010-04-19T03:05:54+00:00\",\"author\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7\"},\"breadcrumb\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=706#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/devkico.itexto.com.br\/?p=706\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=706#primaryimage\",\"url\":\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2010\/04\/logo-mongodb-onwhite.png\",\"contentUrl\":\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2010\/04\/logo-mongodb-onwhite.png\",\"width\":\"1500\",\"height\":\"500\",\"caption\":\"Link para baixar o PDF\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=706#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/devkico.itexto.com.br\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Primeiros passos NoSQL com MongoDB: manipulando documentos\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/devkico.itexto.com.br\/#website\",\"url\":\"https:\/\/devkico.itexto.com.br\/\",\"name\":\"\/dev\/Kico\",\"description\":\"Desenvolvendo software\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/devkico.itexto.com.br\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7\",\"name\":\"Kico (Henrique Lobo Weissmann)\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/dd6973d86a689bc63122b2e603f25be3?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/dd6973d86a689bc63122b2e603f25be3?s=96&d=mm&r=g\",\"caption\":\"Kico (Henrique Lobo Weissmann)\"},\"sameAs\":[\"https:\/\/x.com\/loboweissmann\"],\"url\":\"https:\/\/devkico.itexto.com.br\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Primeiros passos NoSQL com MongoDB: manipulando documentos - \/dev\/Kico","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:\/\/devkico.itexto.com.br\/?p=706","og_locale":"pt_BR","og_type":"article","og_title":"Primeiros passos NoSQL com MongoDB: manipulando documentos - \/dev\/Kico","og_description":"Continuando meu post anterior sobre o assunto, \u00e9 hora de colocarmos a teoria em pr\u00e1tica. Meu objetivo agora \u00e9 expor o b\u00e1sico sobre o funcionamento e opera\u00e7\u00e3o do MongoDB para que, em seguida, possamos aplicar este SGBD a alguma linguagem de programa\u00e7\u00e3o (muito prov\u00e1velmente usarei o Groovy, que cai como uma luva). Instalando o Servidor [&hellip;]","og_url":"https:\/\/devkico.itexto.com.br\/?p=706","og_site_name":"\/dev\/Kico","article_published_time":"2010-04-19T03:05:54+00:00","og_image":[{"url":"http:\/\/www.itexto.net\/devkico\/wp-content\/uploads\/2010\/04\/logo-mongodb-onwhite-300x100.png"}],"author":"Kico (Henrique Lobo Weissmann)","twitter_card":"summary_large_image","twitter_creator":"@loboweissmann","twitter_misc":{"Escrito por":"Kico (Henrique Lobo Weissmann)","Est. tempo de leitura":"6 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/devkico.itexto.com.br\/?p=706","url":"https:\/\/devkico.itexto.com.br\/?p=706","name":"Primeiros passos NoSQL com MongoDB: manipulando documentos - \/dev\/Kico","isPartOf":{"@id":"https:\/\/devkico.itexto.com.br\/#website"},"primaryImageOfPage":{"@id":"https:\/\/devkico.itexto.com.br\/?p=706#primaryimage"},"image":{"@id":"https:\/\/devkico.itexto.com.br\/?p=706#primaryimage"},"thumbnailUrl":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2010\/04\/logo-mongodb-onwhite-300x100.png","datePublished":"2010-04-19T03:05:54+00:00","dateModified":"2010-04-19T03:05:54+00:00","author":{"@id":"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7"},"breadcrumb":{"@id":"https:\/\/devkico.itexto.com.br\/?p=706#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/devkico.itexto.com.br\/?p=706"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/devkico.itexto.com.br\/?p=706#primaryimage","url":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2010\/04\/logo-mongodb-onwhite.png","contentUrl":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2010\/04\/logo-mongodb-onwhite.png","width":"1500","height":"500","caption":"Link para baixar o PDF"},{"@type":"BreadcrumbList","@id":"https:\/\/devkico.itexto.com.br\/?p=706#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/devkico.itexto.com.br\/"},{"@type":"ListItem","position":2,"name":"Primeiros passos NoSQL com MongoDB: manipulando documentos"}]},{"@type":"WebSite","@id":"https:\/\/devkico.itexto.com.br\/#website","url":"https:\/\/devkico.itexto.com.br\/","name":"\/dev\/Kico","description":"Desenvolvendo software","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/devkico.itexto.com.br\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"pt-BR"},{"@type":"Person","@id":"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7","name":"Kico (Henrique Lobo Weissmann)","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/dd6973d86a689bc63122b2e603f25be3?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/dd6973d86a689bc63122b2e603f25be3?s=96&d=mm&r=g","caption":"Kico (Henrique Lobo Weissmann)"},"sameAs":["https:\/\/x.com\/loboweissmann"],"url":"https:\/\/devkico.itexto.com.br\/?author=1"}]}},"jetpack_featured_media_url":"","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts\/706"}],"collection":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=706"}],"version-history":[{"count":8,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts\/706\/revisions"}],"predecessor-version":[{"id":715,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts\/706\/revisions\/715"}],"wp:attachment":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=706"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=706"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=706"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}