{"id":594,"date":"2023-10-23T10:14:57","date_gmt":"2023-10-23T08:14:57","guid":{"rendered":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/?page_id=594"},"modified":"2025-07-26T18:51:49","modified_gmt":"2025-07-26T16:51:49","slug":"2-4-comencar-a-treballar-amb-el-sgbd-mongodb","status":"publish","type":"page","link":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/2-4-comencar-a-treballar-amb-el-sgbd-mongodb\/","title":{"rendered":"2.4. Comen\u00e7ar a treballar amb el SGBD MongoDB"},"content":{"rendered":"<p>A la m\u00e0quina virtual proporcionada per la UOC tenim instal\u00b7lat un SGBD MongoDB.<\/p>\n<p>Per connectar-nos al servidor de MongoDB obrim un terminal, hi escrivim <code>mongosh<\/code> i ens sortir\u00e0 el cursor <code>&gt;<\/code><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"mariadb\" data-enlighter-theme=\"mowtwo\">student@ubuntuM0151:~$ mongosh\r\nCurrent Mongosh Log ID: 66f3c526cf082f27c4964032\r\nConnecting to: mongodb:\/\/127.0.0.1:27017\/?directConnection=true&amp;serverSelectionTimeoutMS=2000&amp;appName=mongosh+2.3.1\r\nUsing MongoDB: 7.0.14\r\nUsing Mongosh: 2.3.1\r\n\r\nFor mongosh info see: https:\/\/www.mongodb.com\/docs\/mongosh-shell\/\r\n\r\n-------\r\n    The server generated these startup warnings when booting\r\n    2024-09-25T10:08:11.986+02:00: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http:\/\/dochub.mongodb.org\/core\/prodnotes-filesystem\r\n    2024-09-25T10:08:17.269+02:00: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted\r\n-------\r\n<\/pre>\n<p>Ja estem connectats al servidor amb el client de la l\u00ednia d\u2019ordres i ja podrem escriure les ordres i sent\u00e8ncies per interactuar amb el servidor de MongoDB.<\/p>\n<p>Per visualitzar les bases de dades creades:<\/p>\n<p><code>show dbs<\/code><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"mariadb\" data-enlighter-theme=\"mowtwo\">&gt; show dbs\r\nadmin    0.000GB\r\nconfig   0.000GB\r\nlocal    0.000GB\r\n<\/pre>\n<p>Com que encara no hem creat cap base de dades, nom\u00e9s ens mostra les bases de dades del sistema.<\/p>\n<p>Per crear una nova base de dades buida fem servir l\u2019ordre <strong><code>use<\/code><\/strong>.<\/p>\n<p>Vam crear la base de dades <strong>uoc<\/strong>.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">use uoc<\/pre>\n<p><strong>L\u2019ordre<\/strong> <em>use<\/em> serveix tant per crear una base de dades nova com per connectar-se a una base de dades existent. L\u2019ordre intenta connectar-se a una base de dades existent i si no existeix la crea.<\/p>\n<p>Aquesta \u00e9s una caracter\u00edstica general de MongoDB, \u00e9s molt flexible i dona pocs errors. En altres sistemes de gesti\u00f3 de bases de dades com MySQL, en intentar connectar amb una base de dades inexistent saltaria un error. A MongoDB no salta error i es crea la nova base de dades. En realitat, no la crea, guarda espai per crear-hi col\u00b7leccions de documents. Si creem una nova base de dades amb l\u2019ordre<strong> use<\/strong> i no creem col\u00b7leccions en ella, no queda emmagatzemada.<\/p>\n<p>Veiem en aquesta seq\u00fc\u00e8ncia d\u2019ordres com consultem les bases de dades existents en el sistema amb <code>show dbs<\/code>, creem la base de dades <strong>uoc<\/strong> amb <code>use uoc<\/code>, i com quan tornem a consultar les bases de dades amb <code>show dbs<\/code> no apareix la base de dades <strong>uoc<\/strong>.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"mariadb\" data-enlighter-theme=\"mowtwo\">&gt; show dbs\r\nadmin   0.000GB\r\nconfig  0.000GB\r\nlocal   0.000GB\r\n\r\n&gt; use uoc\r\nswitched to db uoc\r\n\r\n&gt; show dbs\r\nadmin   0.000GB\r\nconfig  0.000GB\r\nlocal   0.000GB<\/pre>\n<div>Perqu\u00e8 la nova base de dades quedi guardada al sistema cal que tingui col\u00b7leccions de documents.<\/div>\n<p>Ara crearem una nova col\u00b7lecci\u00f3 buida a la base de dades <strong>uoc <\/strong>utilitzant la instrucci\u00f3 <code>createCollection()<\/code>.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"mariadb\" data-enlighter-theme=\"mowtwo\">&gt; use uoc\r\nswitched to db uoc\r\n&gt; db.createCollection(chr1);\r\nuncaught exception: ReferenceError: chr1 is not defined :\r\n@(shell):1:1\r\n&gt; db.createCollection(\"chr1\");\r\n{ \"ok\" : 1 }\r\n&gt; show dbs\r\nadmin  0.000GB\r\nconfig 0.000GB\r\nlocal  0.000GB\r\nuoc    0.000GB\r\n&gt;<\/pre>\n<p>Tornem a connectar-nos a la base de dades <strong>uoc<\/strong> amb <code>use uoc<\/code> i creem la col\u00b7lecci\u00f3 de documents buida anomenada <strong>chr1<\/strong>.<\/p>\n<p>Si us hi fixeu, primer executem la instrucci\u00f3 o funci\u00f3 <code>db.createCollection(chr1);<\/code> per\u00f2 dona error perqu\u00e8 el par\u00e0metre que espera la funci\u00f3 no est\u00e0 entre cometes simples: <strong>&#8220;chr1&#8221;<\/strong>.<\/p>\n<p>En escriure el par\u00e0metre entre cometes simples <code>db.createCollection(\"chr1\");<\/code> la nova col\u00b7lecci\u00f3 anomenada <strong>chr1 <\/strong>es crea correctament a la base de dades <strong>uoc<\/strong>, que ja no est\u00e0 buida, i en executar <code>show dbs<\/code> ja ens mostra la base de dades <strong>uoc<\/strong>.<\/p>\n<p>Analitzarem la instrucci\u00f3 <code>db.createCollection(\u201cchr1\u201d);<\/code> i ens servir\u00e0 per entendre com funcionen les instriccions a MongoDB. Com que ja som a la base de dades <strong>uoc<\/strong>, amb la part de la instrucci\u00f3 <code>db.....<\/code> es refereix a la base de dades que estem fent servir, i a continuaci\u00f3 la instrucci\u00f3 <code>createCollection()<\/code> que en realitat \u00e9s una funci\u00f3 que pot fer servir par\u00e0metres entre par\u00e8ntesis.<\/p>\n<p>Com ja veurem, la majoria d\u2019instruccions s\u00f3n funcions que poden fer servir o no par\u00e0metres. Si la instrucci\u00f3 no necessita par\u00e0metres deixarem els par\u00e8ntesis buits<strong> ()<\/strong>.<\/p>\n<p>Anem a veure algunes <strong>ordres \u00fatils<\/strong> de MongoDB:<\/p>\n<ul>\n<li data-stringify-indent=\"0\" data-stringify-border=\"0\"><code class=\"c-mrkdwn__code\" data-stringify-type=\"code\">db.help()<\/code> Mostra l&#8217;ayuda per als m\u00e8todes de la base de dades.<\/li>\n<li data-stringify-indent=\"0\" data-stringify-border=\"0\"><code>db.&lt;collection&gt;.help()<\/code> Mostra l&#8217;ajuda per als m\u00e8todes de la col\u00b7lecci\u00f3. La &lt;collection&gt; pot ser el nom d&#8217;una col\u00b7lecci\u00f3 ja creada o encara no creada.<\/li>\n<li data-stringify-indent=\"0\" data-stringify-border=\"0\"><code>Show db<\/code> Mostra la llista de totes les bases de dades del sistema.<\/li>\n<li data-stringify-indent=\"0\" data-stringify-border=\"0\"><code>use db<\/code> Canvia la base de dades actual a la base de dades.<\/li>\n<li data-stringify-indent=\"0\" data-stringify-border=\"0\"><code>show collections<\/code> Mostra la llista de totes les col\u00b7leccions de la base de dades actual.<\/li>\n<li data-stringify-indent=\"0\" data-stringify-border=\"0\"><code>show users<\/code> Mostra la llista de tots els usuaris de la base de dades actual.<\/li>\n<li data-stringify-indent=\"0\" data-stringify-border=\"0\"><code>show databases<\/code> Nou a partir de la versi\u00f3 2.4. Mostra la llista de totes les bases de dades disponibles.<\/li>\n<li data-stringify-indent=\"0\" data-stringify-border=\"0\"><code>db.&lt;collection&gt;.find()<\/code> Mostra tots els documents de la col\u00b7lecci\u00f3 &lt;collection&gt;.<\/li>\n<li data-stringify-indent=\"0\" data-stringify-border=\"0\"><code>db.&lt;collection&gt;.find().pretty()<\/code> Mostra tots els documents de la col\u00b7lecci\u00f3 &lt;collection&gt; en un format JSON m\u00e9s llegible.<\/li>\n<\/ul>\n<p>Per veure les col\u00b7leccions creades a la base de dades fem servir la instrucci\u00f3 seg\u00fcent:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">show collections<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"mariadb\" data-enlighter-theme=\"mowtwo\">&gt; show collections\r\nchr1<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>A la m\u00e0quina virtual proporcionada per la UOC tenim instal\u00b7lat un SGBD MongoDB. Per connectar-nos al servidor de MongoDB obrim un terminal, hi escrivim mongosh i ens sortir\u00e0 el cursor &gt; student@ubuntuM0151:~$ mongosh Current Mongosh Log ID: 66f3c526cf082f27c4964032 Connecting to: mongodb:\/\/127.0.0.1:27017\/?directConnection=true&amp;serverSelectionTimeoutMS=2000&amp;appName=mongosh+2.3.1 Using MongoDB: 7.0.14 Using Mongosh: 2.3.1 For mongosh info see: https:\/\/www.mongodb.com\/docs\/mongosh-shell\/ &#8212;&#8212;- The server [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"acf":[],"_links":{"self":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/pages\/594"}],"collection":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/comments?post=594"}],"version-history":[{"count":11,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/pages\/594\/revisions"}],"predecessor-version":[{"id":1057,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/pages\/594\/revisions\/1057"}],"wp:attachment":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/media?parent=594"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}