{"id":383,"date":"2023-09-04T10:56:19","date_gmt":"2023-09-04T08:56:19","guid":{"rendered":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/?page_id=383"},"modified":"2026-07-14T20:26:46","modified_gmt":"2026-07-14T18:26:46","slug":"2-6-buscar-documentos","status":"publish","type":"page","link":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/es\/2-6-buscar-documentos\/","title":{"rendered":"2.6. Buscar documentos"},"content":{"rendered":"<p>Primero contaremos cu\u00e1ntos documentos tiene la colecci\u00f3n <strong>chr11<\/strong> con la instrucci\u00f3n<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"mariadb\" data-enlighter-theme=\"mowtwo\">db.chr11.find().count();<\/pre>\n<p>Esta instrucci\u00f3n contiene dos funciones. La funci\u00f3n <code>find()<\/code> que es la funci\u00f3n que utilizamos para realizar b\u00fasquedas en la colecci\u00f3n de documentos. Ser\u00eda la instrucci\u00f3n <strong><code>SELECT<\/code><\/strong> que hemos visto en MySQL. Si no a\u00f1adimos par\u00e1metros nos mostrar\u00e1 todos los documentos de la colecci\u00f3n, si a\u00f1adimos par\u00e1metros, estos ser\u00e1n los criterios de b\u00fasqueda o los filtros de la selecci\u00f3n. En este caso complementamos la funci\u00f3n <code>find()<\/code> con la funci\u00f3n <code>count()<\/code> para contar los documentos encontrados. La funci\u00f3n <code>count()<\/code> no requiere par\u00e1metros, pero es necesario escribir los par\u00e9ntesis igualmente.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"mariadb\" data-enlighter-theme=\"mowtwo\">&gt; db.chr11.find().count();\r\n3<\/pre>\n<p>Al ejecutar la instrucci\u00f3n<code> db.chr11.find().count();<\/code> \u00a0el sistema nos devuelve 3. La colecci\u00f3n <strong>chr11<\/strong> tiene 3 documentos.<\/p>\n<p>Vamos a utilizar la instrucci\u00f3n \u00a0db.chr11.find(); \u00a0para ver todos los documentos:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"mariadb\" data-enlighter-theme=\"mowtwo\">&gt; db.chr11.find():\r\n{ \"_id\" : ObjectId(\"64861afc32e0aa299185905c\"), \"name\" : \"uc001aaa\r\narts\" : 11873m12612,13220,\", \"exonEnds\" : \"12227,12721,14409,\", \"\r\n{ \"_id\" : ObjectId(\"64861df75d6ce7147d325b7e\"), \"name\" : \"uc010nxr\r\narts\" : \"11873,12645,13220,\", \"exonEnds\" : \"12227,12697,14409,\", \"\r\n{ \"_id\" : ObjectId(\"64861e025d6ce7147d325b7f\"), \"name\" : \"uc009vit\r\narts\" : \"14361,14969,15795,16606,16857,17232,17914,18267,18912,\",\r\n&gt;<\/pre>\n<p>Para cada documento, el sistema nos muestra el campo <strong>_id<\/strong> con un valor generado aleatoriamente por la funci\u00f3n del sistema <code>ObjectId()<\/code>;<\/p>\n<p>En el campo <strong>_id <\/strong>se guarda la clave primaria del documento. Esta clave primaria es tan importante para el sistema que si el documento que insertamos no tiene el campo <strong>_id<\/strong> el sistema lo crea de forma autom\u00e1tica. En nuestros ejemplos los tres documentos inseridos no tienen el campo <strong>_id <\/strong>y el sistema lo ha generado autom\u00e1ticamente.<\/p>\n<p>En un documento puede haber muchos campos y, tal como los muestra la funci\u00f3n<code> find();<\/code> , quedan poco legibles. Para que el documento se pueda leer mejor, la funci\u00f3n<code> find();<\/code> se puede complementar con la funci\u00f3n <code>pretty();<\/code><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"mariadb\" data-enlighter-theme=\"mowtwo\">db.chr11.find().pretty();<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"mariadb\" data-enlighter-theme=\"mowtwo\">&gt; db.chr11.find().pretty();\r\n{\r\n        \"_id\" : ObjectId(\"64861afc32e0aa299185905c\"),\r\n        \"name\" : \"uc001aaa.3\",\r\n        \"chrom\" : \"chr11\",\r\n        \"strand\" : \"+\",\r\n        \"txStart\" : 11873,\r\n        \"txEnd\" : 14409,\r\n        \"cdsStart\" : 11873,\r\n        \"cdsEnd\" : 11873,\r\n        \"exonCount\" : 3,\r\n        \"exonStarts\" : \"11873,12612,13220,\",\r\n        \"exonEnds\" : \"12227,12721,14409,\",\r\n        \"proteinID\" : \"\",\r\n        \"alignID\" : \"uc001aaa.3\"\r\n}\r\n{\r\n        \"_id\" : ObjectId(\"64861df75d6ce7147d325b7e\"),\r\n        \"name\" : \"uc010nxr.1\",\r\n        \"chrom\" : \"chr11\",\r\n        \"strand\" : \"+\",\r\n        \"txStart\" : 11873,\r\n        \"txEnd\" : 14409,\r\n        \"cdsStart\" : 11873,\r\n        \"cdsEnd\" : 11873,\r\n        \"exonCount\" : 3,\r\n        \"exonStarts\" : \"11873,12645,13220,\",\r\n        \"exonEnds\" : \"12227,12697,14409,\",\r\n        \"proteinID\" : \"\",\r\n        \"alignID\" : \"uc010nxr.1\"\r\n}<\/pre>\n<p>Como podemos observar, la funci\u00f3n pretty(); nos permite ver los valores de cada campo de cada documento de una forma mucho m\u00e1s amigable.<\/p>\n<p>ahora algunos ejemplos de utilizaci\u00f3n de la funci\u00f3n find() con algunos par\u00e1metros para filtrar los resultados.<\/p>\n<p>Vamos a mostrar solo los genes de nuestra colecci\u00f3n que se encuentra en la hebra +:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"mariadb\" data-enlighter-theme=\"mowtwo\">db.chr11.find({\"strand\": \"+\"}).pretty();<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"mariadb\" data-enlighter-theme=\"mowtwo\">&gt; db.chr11.find({\"strand\": \"+\").pretty();\r\n{\r\n        \"_id\" : ObjectId(\"6487c3e05d6ce7147d325b83\"),\r\n        \"name\" : \"uc001aaa.3\",\r\n        \"chrom\" : \"chr11\",\r\n        \"strand\" : \"+\",\r\n        \"txStart\" : 11873,\r\n        \"txEnd\" : 14409,\r\n        \"cdsStart\" : 11873,\r\n        \"cdsEnd\" : 11873,\r\n        \"exonCount\" : 3,\r\n        \"exonStarts\" : \"11873,12612,13220,\",\r\n        \"exonEnds\" : \"12227,12721,14409,\",\r\n        \"proteinID\" : \"\",\r\n        \"alignID\" : \"uc001aaa.3\"\r\n}\r\n{\r\n        \"_id\" : ObjectId(\"6487c410235597cf4bc92782\"),\r\n        \"name\" : \"uc010nxr.1\",\r\n        \"chrom\" : \"chr11\",\r\n        \"strand\" : \"+\",\r\n        \"txStart\" : 11873,\r\n        \"txEnd\" : 14409,\r\n        \"cdsStart\" : 11873,\r\n        \"cdsEnd\" : 11873,\r\n        \"exonCount\" : 3,\r\n        \"exonStarts\" : \"11873,12645,13220,\",\r\n        \"exonEnds\" : \"12227,12697,14409,\",\r\n        \"proteinID\" : \"\",\r\n        \"alignID\" : \"uc010nxr.1\"\r\n}<\/pre>\n<p>El par\u00e1metro de la funci\u00f3n es la condici\u00f3n de selecci\u00f3n de la b\u00fasqueda <code>{\"strand\": \"+\"}\u00a0<\/code><\/p>\n<p>Si no queremos mostrar alg\u00fan campo, como por ejemplo el campo <strong><code>_id<\/code><\/strong>, escribimos<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"mariadb\" data-enlighter-theme=\"mowtwo\">db.chr11.find({\"strand\": \"+\"}, {\"_id\":0}).pretty();<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"mariadb\" data-enlighter-theme=\"mowtwo\">&gt; db.chr11.find({\"strand\": \"+\"), {\"\u2013id\":0})pretty();\r\n{\r\n        \"name\" : \"uc001aaa.3\",\r\n        \"chrom\" : \"chr11\",\r\n        \"strand\" : \"+\",\r\n        \"txStart\" : 11873,\r\n        \"txEnd\" : 14409,\r\n        \"cdsStart\" : 11873,\r\n        \"cdsEnd\" : 11873,\r\n        \"exonCount\" : 3,\r\n        \"exonStarts\" : \"11873,12612,13220,\",\r\n        \"exonEnds\" : \"12227,12721,14409,\",\r\n        \"proteinID\" : \"\",\r\n        \"alignID\" : \"uc001aaa.3\"\r\n}\r\n{\r\n        \"name\" : \"uc010nxr.1\",\r\n        \"chrom\" : \"chr11\",\r\n        \"strand\" : \"+\",\r\n        \"txStart\" : 11873,\r\n        \"txEnd\" : 14409,\r\n        \"cdsStart\" : 11873,\r\n        \"cdsEnd\" : 11873,\r\n        \"exonCount\" : 3,\r\n        \"exonStarts\" : \"11873,12645,13220,\",\r\n        \"exonEnds\" : \"12227,12697,14409,\",\r\n        \"proteinID\" : \"\",\r\n        \"alignID\" : \"uc010nxr.1\"\r\n}<\/pre>\n<p>Si queremos mostrar un solo campo de los documentos seleccionados, como por ejemplo el campo <strong>name<\/strong>, escribimos<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"mariadb\" data-enlighter-theme=\"mowtwo\">db.chr11.find({\"strand\": \"+\"},{\"name\":1, \"_id\":0 }).pretty();<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"mariadb\" data-enlighter-theme=\"mowtwo\">&gt; db.chr11.find({\"strand\": \"+\"),{\"name\":1, \"\u2013id\":0 }).pretty();\r\n{ \"name\" : \"uc001aaa.3\" }\r\n{ \"name\" : \"uc010nxr.1\" }<\/pre>\n<p>Las consultas con la funci\u00f3n <code>find()<\/code> pueden ser mucho m\u00e1s elaboradas, usando varios campos como condici\u00f3n de b\u00fasqueda, o tambi\u00e9n usando operadores especiales como mayor que, menor que, etc.<\/p>\n<div class=\"featured featured-grey\"><\/p>\n<p><strong>Ejemplos de operadores especiales:<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">$gt, $gte, $lt, $lte, $ne, $in, $nin, $mod, $regex\/$options,<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">$all, $size, $exists, $type, $not, $or, $nor, $elemMatch<\/pre>\n<p>Ejemplo de selecci\u00f3n de documentos en los que el campo <strong>txStart<\/strong> sea mayor que 11873:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"mariadb\" data-enlighter-theme=\"mowtwo\">db.chr11.find({\"txStart\": {\"$gt\" : 11873 }}).pretty();<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"mariadb\" data-enlighter-theme=\"mowtwo\">&gt; db.chr11.find({\"txStart\": {$gt\" : 11873 }}).pretty();\r\n{\r\n        \"_id\" : ObjectId(\"6487c41c235597cf4bc92783\"),\r\n        \"name\" : \"uc009vit.3\",\r\n        \"chrom\" : \"chr11\",\r\n        \"strand\" : \"-\",\r\n        \"txStart\" : 14361,\r\n        \"txEnd\" : 19759,\r\n        \"cdsStart\" : 14361,\r\n        \"cdsEnd\" : 14361,\r\n        \"exonCount\" : 9,\r\n        \"exonStarts\" : \"14361,14969,15795,16606,16857,17232,17914,18267,18912,\",\r\n        \"exonEnds\" : \"14829,15038,15947,16765,17055,17742,18061,18366,19759,\",\r\n        \"proteinID\" : \"\",\r\n        \"alignID\" : \"uc009vit.3\"\r\n}\r\n&gt;<\/pre>\n<p>O que cumpla dos condiciones, que se encuentren en la hebra + y que el campo <strong>txStart<\/strong> sea mayor o igual a 11873.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"mariadb\" data-enlighter-theme=\"mowtwo\">db.chr11.find({\"strand\": \"+\", \"txStart\": {\"$gte\" : 11873 }}).pretty();<\/pre>\n<p>\n<\/div>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Primero contaremos cu\u00e1ntos documentos tiene la colecci\u00f3n chr11 con la instrucci\u00f3n db.chr11.find().count(); Esta instrucci\u00f3n contiene dos funciones. La funci\u00f3n find() que es la funci\u00f3n que utilizamos para realizar b\u00fasquedas en la colecci\u00f3n de documentos. Ser\u00eda la instrucci\u00f3n SELECT que hemos visto en MySQL. Si no a\u00f1adimos par\u00e1metros nos mostrar\u00e1 todos los documentos de la colecci\u00f3n, [&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\/es\/wp-json\/wp\/v2\/pages\/383"}],"collection":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/es\/wp-json\/wp\/v2\/comments?post=383"}],"version-history":[{"count":15,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/es\/wp-json\/wp\/v2\/pages\/383\/revisions"}],"predecessor-version":[{"id":1079,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/es\/wp-json\/wp\/v2\/pages\/383\/revisions\/1079"}],"wp:attachment":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/es\/wp-json\/wp\/v2\/media?parent=383"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}