{"id":26871725,"url":"https://github.com/eocode/python-mongo","last_synced_at":"2026-05-02T19:36:16.498Z","repository":{"id":53655229,"uuid":"208928332","full_name":"eocode/Python-Mongo","owner":"eocode","description":"Ejercicios y ejemplos de uso con mongo db","archived":false,"fork":false,"pushed_at":"2022-12-08T01:49:01.000Z","size":10,"stargazers_count":1,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-31T07:34:08.439Z","etag":null,"topics":["apuntes","mongodb","python","software-engineering"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eocode.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-09-17T01:05:46.000Z","updated_at":"2020-07-17T20:01:25.000Z","dependencies_parsed_at":"2023-01-24T04:10:11.082Z","dependency_job_id":null,"html_url":"https://github.com/eocode/Python-Mongo","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/eocode/Python-Mongo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eocode%2FPython-Mongo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eocode%2FPython-Mongo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eocode%2FPython-Mongo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eocode%2FPython-Mongo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eocode","download_url":"https://codeload.github.com/eocode/Python-Mongo/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eocode%2FPython-Mongo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32547650,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-02T19:18:06.202Z","status":"ssl_error","status_checked_at":"2026-05-02T19:16:21.335Z","response_time":132,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apuntes","mongodb","python","software-engineering"],"created_at":"2025-03-31T07:30:32.603Z","updated_at":"2026-05-02T19:36:16.479Z","avatar_url":"https://github.com/eocode.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Curso de mongo db\nCódigo del curso db.py\n\n# Postman\n1. Descargar e instalar [Postman](https://www.getpostman.com/downloads/)\n2. La URI de las colecciones de Postman usada para el proyecto está en [Postman-platzi-mongo](https://www.getpostman.com/collections/ffcbfb5c8d5cd2dc52d2)\n3. Importar colección dentro de Postman [Instrucciones](https://learning.getpostman.com/docs/postman/collections/data_formats/#exporting-and-importing-postman-data)\n\n## Instalar Anaconda \nLa forma más simple de ejecutar el proyecto es instalando [Anaconda](https://www.anaconda.com/distribution/).\n```\n# navegar hasta el directorio del proyecto\ncd platzi-mongo\n# crear un nuevo ambiente\nconda create --name platzi-mongo\n# activar el ambiente \nconda activate platzi-mongo\n# para desactivar el ambiente\nconda deactivate\n```\nSi usas Python frecuentemente y tienes una versión 3.3+ no es necesario que \ninstales Anaconda, crea un ambiente virtual con venv o virtualenv y sigue con \nel paso de instalar las dependencias.\n## Instalar dependenias del proyecto\nCon el ambiente activado, instalar las dependencias:\n```\npip install -r requirements.txt\n```\n## Variables de entorno necesarias para ejecutar el proyecto\nAsegurate de reemplazar el valor de PLATZI_DB_URI por la URI de tu cluster en MongoDB Atlas\n```\nWindows es con set\nexport FLASK_APP=platzi-api\nexport FLASK_ENV=development \nexport PLATZI_DB_URI=\"MONGO-URI\"\n```\n\n## Iniciar el servidor de platzi-mongo\n```\nflask run\n```\n\n# Comandos utiles y primeros pasos\n1. Servidor online: [Mongo Atlas](https://www.mongodb.com/es/cloud/atlas)\n2. Descargar mongo: [Mongo Download Center](https://www.mongodb.com/download-center/community)\n3. Agregar la variable de entorno\n4. Conectar con la variable de conexión desde https://cloud.mongodb.com\n\n### Documentación\n1. [PyMongo](https://api.mongodb.com/python/current/)\n2. [Operadores mongo](https://docs.mongodb.com/manual/reference/operator/)\n3. [Agregaciones](https://docs.mongodb.com/manual/aggregation/)\n\n### Mostrar bases de datos\n```\nshow dbs\n```\n\n### Crear seleccionar una base de datos\n```\nuse nombredb\n```\n\n### Eliminar una base de datos seleccionada\n```\ndb.dropDatabase()\n```\n\n### Mostrar todas las colecciones de la base de datos\n```\nshow collections\ndb.getCollectionNames()\n```\n\n### Crear una colección (se crea vacia)\n```\ndb.createCollection(\"nombre_coleccion\")\ndb.coleccion.drop()\n```\n\n## CRUD: Insertar, Mostrar, Actualizar y Eliminar\n### Inserts (Acepta los datos sin crear una estructura definida y se amolda con el tiempo)\nAl hacer cada inserción, mongodb automáticamente generara un ID unico, similar al “auto_increment primary key”, pero este ID es del tipo ObjectId de mongodb y es alfanumérico, muy similar a sha1 o md5. Tambien podemos hacer inserciones mas complejas, todo lo que sea soportado por JSON y por BSON ( el formato de MongoDB, con algunos tipos agregados sobre el original JSON)\n```\ndb.micoleccion.insert({\"nombre\":\"Agustin\",\"apellido\":\"Ramos\",\"domicilio\":\"Tabasco\"})\ndb.micoleccion.insert({\"nombre\":\"Sebastian\",\"apellido\":\"Ramos\",\"domicilio\":\"Tabasco\"})\ndb.micoleccion.insert({\"nombre\":\"Leonardo\",\"apellido\":\"Ramos\",\"domicilio\":\"Tabasco\"})\ndb.micoleccion.insert({\"nombre\":\"Jennifer\",\"apellido\":\"Jimenez\",\"domicilio\":\"Tabasco\"})\ndb.micoleccion.insert({\"nombre\":\"Diana\",\"apellido\":\"Jimenez\",\"domicilio\":\"Tabasco\"})\ndb.micoleccion.insert({\"nombre\":\"Jeremias\",\"apellido\":\"Escalante\",\"domicilio\":\"Quintana Roo\"})\n```\nInsertar muchos\n```\ndb.inventory.insertMany(\n[{ _id: 1, item: { name: \"ab\", code: \"123\" }, qty: 15, tags: [ \"A\", \"B\", \"C\" ] },\n{ _id: 2, item: { name: \"cd\", code: \"123\" }, qty: 20, tags: [ \"B\" ] },\n{ _id: 3, item: { name: \"ij\", code: \"456\" }, qty: 25, tags: [ \"A\", \"B\" ] },\n{ _id: 4, item: { name: \"xy\", code: \"456\" }, qty: 30, tags: [ \"B\", \"A\" ] },\n{ _id: 5, item: { name: \"mn\", code: \"000\" }, qty: 20, tags: [ [ \"A\", \"B\" ], \"C\" ] }]\n)\n```\n### Selects (Muestra todo lo que hay en la colección)\n```\ndb.micoleccion.find()\ndb.micoleccion.find({\"apellido\":\"Ramos\"})\ndb.micoleccion.find({\"_id\":ObjectId(\"56c9a1ffbb6e73925f958b1a\")})\n```\n### Updates (Actualización de registros)\n```\ndb.micoleccion.update({\"_id\":ObjectId(\"56c9a1ffbb6e73925f958b1a\")},{$set:{\"apellido\":\"Ramos Escalante\"}})\n```\n\n### Delete (Eliminación de registros)\n```\ndb.micoleccion.remove({\"_id\":ObjectId(\"56c9a1ffbb6e73925f958b1a\")})\ndb.micoleccion.remove()\n```\nNo es necesario finalizar las consultas con “;” (punto y coma)\nNo existe “describe mitabla”: Las colecciones en MongoDB no tienen una “estructura” fijada, por lo que en una colección incluso pueden haber registros que tengan ciertos “campos” y otros no, dicho esto, no se puede hacer una descripción de la colección.\n\n### Otros códigos\n```\n// $or\ndb.inventory.find({$or: [{qty: {$gt: 25}}, {qty: {$lte: 15}}]})\n\n// $gte\ndb.inventory.find({qty: {$gte: 25}})\n\n// $size\ndb.inventory.find({tags: {$size: 2}})\n\ndb.survey.insertMany([\n{ _id: 1, results: [ { product: \"abc\", score: 10 }, { product: \"xyz\", score: 5 } ] }\n{ _id: 2, results: [ { product: \"abc\", score: 8 }, { product: \"xyz\", score: 7 } ] }\n{ _id: 3, results: [ { product: \"abc\", score: 7 }, { product: \"xyz\", score: 8 } ] }\n])\n\ndb.survey.find(\n   { results: { $elemMatch: { product: \"xyz\", score: { $gte: 8 } } } }\n)\ndb.survey.find(\n   { results: { $elemMatch: { product: \"xyz\" } } }```\n```\n\n### Operadores comunes\n```\n$addToSet\n```\n\n## Índices en Mongo\nTipos de índices:\n1. De un solo campo (Cuando nos interesa un campo)\n2. Compuestos \n3. Multi-llave\n4. Geoespaciales (Querys con Latitud y longitud, por geoposicionamiento)\n5. De texto (Busque da de texto)\n6. Hashed (Convertir valores en hash)\n### Ver los índices\n```\ndb.cursos.getIndexes()\n```\n### Crear índices\n```\ndb.cursos.createIndex({\"nombre\": \"text\"})\n```\n### Hacer consultas\n```\ndb.cursos.find({$text: {$search:\"aws\"}}, {nombre: 1})\ndb.cursos.find({$text: {$search:\"aws\"}})\ndb.cursos.find({$text: {$search:\"aws\"}}).pretty()\n```\n\n## Apuntes teoricos\n1. One to one: Documentos embebidos\n2. One to many: Documentos embebidos cuando la información no va a cambiar muy frecuentemente y referencias cuando si.\n\n## Tratamiento de datos geoespaciales\n[Revisar estas notas de geolocalizacion](http://www.carlos-garcia.es/index.php/tutorial/mongodb_busquedas_ubicacion_geografica)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feocode%2Fpython-mongo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feocode%2Fpython-mongo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feocode%2Fpython-mongo/lists"}