Advertencia
Esta funcionalidad es experimental. MongoDB no proporciona soporte para Fragmentos. Esta funcionalidad puede ser cambiada o eliminada en cualquier momento sin previo aviso.
No se esperan errores, sin embargo, si encuentras alguno, abre un caso en el Repositorio de GitHub para este proyecto.
Esta página ofrece una visión general sobre cómo trabajar con fragmentos en la
mongosh consola.
Instalar paquetes de fragmentos
Debe instalar un paquete de snippets antes de usarlo. Una vez instalado un paquete de snippets, se carga cada vez que mongosh inicia.
Si conoce el nombre del snippet que desea instalar, ingrese:
snippet install <name>
De lo contrario, busca en el repositorio para obtener una lista de snippets disponibles.
snippet search
Una vez que el snippet esté instalado, introduce y para cargarlo.
Running install... Installed new snippets analyze-schema. Do you want to load them now? [Y/n]: y Finished installing snippets: analyze-schema
Nota
Si esta es la primera vez que usas snippet, es posible que veas una advertencia como la siguiente:
This operation requires downloading a recent release of npm. Do you want to proceed? [Y/n]:
Debe instalar npm para utilizar fragmentos de código.
Ejecutar un fragmento
Antes de ejecutar un nuevo snippet, ejecuta snippet help <SNIPPET NAME> para aprender más sobre la funcionalidad del snippet.
Por ejemplo, snippet help analyze-schema indica que puedes usar el analyze-schema pasándole un nombre de colección.
testDB> snippet help analyze-schema # analyze-schema Analyze the schema of a collection or a cursor. ```js > schema(db.coll); ┌─────────┬───────┬───────────┬────────────┐ │ (index) │ 0 │ 1 │ 2 │ ├─────────┼───────┼───────────┼────────────┤ │ 0 │ '_id' │ '100.0 %' │ 'ObjectID' │ │ 1 │ 'a ' │ '50.0 %' │ 'Number' │ │ 2 │ 'a ' │ '50.0 %' │ 'String' │ └─────────┴───────┴───────────┴────────────┘
Una vez que sepa cómo llamar a un fragmento, puede usarlo como en el siguiente ejemplo.
Considere la colección reservations:
db.reservations.insertMany( [ {"_id": 1001, "roomNum": 1, "reserved": true }, {"_id": 1002, "roomNum": 2, "reserved": true }, {"_id": 1003, "roomNum": 3, "reserved": "false" }, {"_id": 1004, "roomNum": 4, "reserved": true }, ] )
Para analizar la colección, instale el snippet analyze-schema si aún no está presente, pase el nombre de la colección para ejecutarlo.
snippet install analyze-schema schema(db.reservations)
El documento con "_id": 3 se introdujo erróneamente como una cadena. El análisis muestra que el campo reserved contiene elementos de tipo string además de los booleanos esperados.
┌─────────┬────────────┬───────────┬───────────┐ │ (index) │ 0 │ 1 │ 2 │ ├─────────┼────────────┼───────────┼───────────┤ │ 0 │ '_id ' │ '100.0 %' │ 'Number' │ │ 1 │ 'reserved' │ '75.0 %' │ 'Boolean' │ │ 2 │ 'reserved' │ '25.0 %' │ 'String' │ │ 3 │ 'roomNum ' │ '100.0 %' │ 'Number' │ └─────────┴────────────┴───────────┴───────────┘
Desinstalar fragmentos
Usa el comando snippet uninstall para remover un fragmento. Si no estás seguro del nombre, el comando snippet ls lista todos los fragmentos instalados.
Este código desinstala el snippet analyze-schema.
snippet uninstall analyze-schema
Encuentra paquetes de snippet disponibles
El comando snippet ls devuelve una lista de snippets instalados localmente junto con información sobre la versión y la fuente.
snippets@ /root/.mongodb/mongosh/snippets ├── mongosh:PRIVATE..DecryptCards@1.0.5 ├── mongosh:analyze-schema@1.0.5 └── npm@7.23.0
Para ver los snippets que están disponibles en el registro, primero refresh la caché de metadatos local y luego search.
snippet refresh snippet search
snippet search enumera los fragmentos disponibles, su versión y proporciona una breve descripción.
Esta instancia tiene configurado un segundo registro privado. Dado que el registro privado se incluyó primero, estos fragmentos preceden a los de MongoDB en la lista de fragmentos disponibles.
┌─────────┬─────────────────────────────────┬─────────┬────────────────────────────────────────────────────────────────┐ │ (index) │ name │ version │ description │ ├─────────┼─────────────────────────────────┼─────────┼────────────────────────────────────────────────────────────────┤ │ 0 │ 'PRIVATE..DecryptCards' │ '1.0.5' │ 'Decrypt credit card numbers' │ │ 1 │ 'PRIVATE..updateAuthentication' │ '1.0.2' │ 'Update user pwds and authentication' │ │ 2 │ 'resumetoken' │ '1.0.2' │ 'Resume token decoder script' │ │ 3 │ 'mongocompat' │ '1.0.7' │ 'mongo compatibility script for mongosh' │ │ 4 │ 'spawn-mongod' │ '1.0.1' │ 'Spin up a local mongod process' │ │ 5 │ 'mock-collection' │ '1.0.2' │ 'mockCollection([{ a: 1 }, { a: 2 }]).find({ a: { $gt: 2 } })' │ │ 6 │ 'analyze-schema' │ '1.0.5' │ 'schema(db.coll)' │ └─────────┴─────────────────────────────────┴─────────┴────────────────────────────────────────────────────────────────┘
Obtener información del repositorio
Mostrar la página de inicio y la URL de cada repositorio de fragmentos:
snippet info
La salida muestra cada repositorio.
Snippet repository URL: https://compass.mongodb.com/mongosh/snippets-index.bson.br --> Homepage: https://github.com/mongodb-labs/mongosh-snippets
Obtén ayuda para un snippet
Cada fragmento es único y tiene su propia interfaz. La mejor manera de encontrar información sobre el funcionamiento de un fragmento en particular es ver su archivo README ejecutando snippet help:
snippet help mongocompat
Este comando muestra el archivo README para el mongocompat snippet en la consola de mongosh.
# mongocompat Provide `mongo` legacy shell compatibility APIs. ```js > Array.sum([1, 2, 3]) 6 > tojsononeline({a:1,b:2,c:3}) { "a" : 1, "b" : 2, "c" : 3 } ```
Al crear tus propios paquetes de fragmentos, asegúrate de incluir un archivo README.md que ofrezca ayuda útil.