{"id":203,"date":"2018-03-21T00:16:47","date_gmt":"2018-03-21T00:16:47","guid":{"rendered":"http:\/\/python.wp.w3.pt\/?p=203"},"modified":"2018-03-21T02:57:55","modified_gmt":"2018-03-21T02:57:55","slug":"mongodb","status":"publish","type":"post","link":"http:\/\/python.w3.pt\/?p=203","title":{"rendered":"MongoDB"},"content":{"rendered":"<p>Vou usar o SGBD da moda, o MongoDB, nos projetos em que tenho estado a trabalhar com o Python.<\/p>\n<p>O <a href=\"http:\/\/www.slackware.com\/\">Slackware<\/a> n\u00e3o traz um pacote de instala\u00e7\u00e3o do MongoDB, por isso tive que o criar a partir do c\u00f3digo fonte. \u00c9 claro que n\u00e3o o criei de raiz, usei como guia\/base os scripts do <a href=\"https:\/\/slackbuilds.org\/\">SlackBuilds<\/a>.<\/p>\n<p>O script para criar o pacote do MongoDB precisa de um outro pacote que o Slackware tamb\u00e9m n\u00e3o tem, o SCons, que \u00e9 um conjunto de ferramentas com funcionalidades semelhantes ao MAKE.<\/p>\n<p><a href=\"https:\/\/slackbuilds.org\/repository\/14.1\/system\/mongodb\/\">Slackbuilds MongoDB<\/a><br \/>\n<a href=\"https:\/\/slackbuilds.org\/repository\/14.1\/development\/scons\/\">Slackbuilds SCons<\/a><\/p>\n<p>Editei os ficheiros do Slackbuild para colocar os n\u00fameros das vers\u00f5es mais recentes do <a href=\"http:\/\/www.scons.org\/\">SCons<\/a> e do <a href=\"http:\/\/www.mongodb.org\/\">MongoDB<\/a>.<\/p>\n<p>O pacote do SCons foi criado e instalado sem problemas.<\/p>\n<p>Antes de criar o pacote do MongoDB, tive que consultar a p\u00e1gina <a href=\"https:\/\/github.com\/mongodb\/mongo\/wiki\/Build-Mongodb-From-Source\">Build Mongodb From Source<\/a> que diz que \u00e9 necess\u00e1rio correr a linha seguinte, a partir do pacote descomprimido do MongoDB:<\/p>\n<p><code>pip install -r buildscripts\/requirements.txt<\/code><\/p>\n<p>Sem a atualiza\u00e7\u00e3o anterior, o script do Slackbuild produz um erro. Durante a compila\u00e7\u00e3o, recebi o aviso seguinte:<\/p>\n<p>Run &#8216;<code>pip2 install --user regex<\/code>&#8216; to speed up error code checking<\/p>\n<p>Assim fiz. Corri <code>pip2 install --user regex<\/code>.<\/p>\n<p>O pacote de Mongo DB demorou cerca de duas horas a compilar num i5 com 8GB de RAM, sem processos pesados a correr, e produziu um pacote com 1GB de tamanho (1.089.913.083 bytes).<\/p>\n<p>Quando lancei o mongo, atrav\u00e9s do script do Slackware, obtive o erro seguinte:<\/p>\n<p><code>Error parsing command line: unrecognised option '--nohttpinterface'<\/code><\/p>\n<p>No <a href=\"https:\/\/docs.mongodb.com\/manual\/release-notes\/3.6-compatibility\/#http-interface-and-rest-api\">manual do mongo<\/a>, a partir da vers\u00e3o 3.6, essa op\u00e7\u00e3o obsoleta foi removida. Assim, removi-a tamb\u00e9m do script do Slackware, <code>\/etc\/rc.d\/rc.mongodb<\/code> e j\u00e1 pude correr o script de lan\u00e7amento <code>\/etc\/rc.d\/rc.mongodb start<\/code>.<\/p>\n<p>Um exemplo simples de utiliza\u00e7\u00e3o:<\/p>\n<pre>\r\n> db.users.insertOne({name:'maria',age:32})\r\n{\r\n        \"acknowledged\" : true,\r\n        \"insertedId\" : ObjectId(\"5ab1ce17d199c47e39de4a59\")\r\n}\r\n> db.users.find()\r\n{ \"_id\" : ObjectId(\"5ab1ce17d199c47e39de4a59\"), \"name\" : \"maria\", \"age\" : 32 }\r\n> db.users.updateOne({name: 'maria'}, {$set: {age: 45}})\r\n{ \"acknowledged\" : true, \"matchedCount\" : 1, \"modifiedCount\" : 1 }\r\n> db.users.find()\r\n{ \"_id\" : ObjectId(\"5ab1ce17d199c47e39de4a59\"), \"name\" : \"maria\", \"age\" : 45 }\r\n>\r\n> db.users.deleteOne({name: 'maria'})\r\n{ \"acknowledged\" : true, \"deletedCount\" : 1 }\r\n> db.users.find()\r\n>\r\n<\/pre>\n<p>Mais informa\u00e7\u00e3o sobre opera\u00e7\u00f5es de manipula\u00e7\u00e3o de dados: <a href=\"https:\/\/docs.mongodb.com\/manual\/crud\/\">https:\/\/docs.mongodb.com\/manual\/crud\/<\/a><br \/>\nManual em geral: <a href=\"https:\/\/docs.mongodb.com\/manual\/\">https:\/\/docs.mongodb.com\/manual\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Vou usar o SGBD da moda, o MongoDB, nos projetos em que tenho estado a trabalhar com o Python. O Slackware n\u00e3o traz um pacote de instala\u00e7\u00e3o do MongoDB, por isso tive que o criar a partir do c\u00f3digo fonte. \u00c9 claro que n\u00e3o o criei de raiz, usei como guia\/base os scripts do SlackBuilds. &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/python.w3.pt\/?p=203\" class=\"more-link\">Continuar a ler <span class=\"screen-reader-text\">&#8220;MongoDB&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"_links":{"self":[{"href":"http:\/\/python.w3.pt\/index.php?rest_route=\/wp\/v2\/posts\/203"}],"collection":[{"href":"http:\/\/python.w3.pt\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/python.w3.pt\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/python.w3.pt\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/python.w3.pt\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=203"}],"version-history":[{"count":11,"href":"http:\/\/python.w3.pt\/index.php?rest_route=\/wp\/v2\/posts\/203\/revisions"}],"predecessor-version":[{"id":215,"href":"http:\/\/python.w3.pt\/index.php?rest_route=\/wp\/v2\/posts\/203\/revisions\/215"}],"wp:attachment":[{"href":"http:\/\/python.w3.pt\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=203"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/python.w3.pt\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=203"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/python.w3.pt\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=203"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}