Advertencia
Esta función es experimental. MongoDB no admite fragmentos. Esta función puede modificarse o eliminarse en cualquier momento sin previo aviso.
No se esperan errores, sin embargo, si encuentra alguno, abra un problema en el Repositorio de GitHub para este proyecto.
Esta página es una descripción general sobre cómo trabajar con fragmentos en el
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 fragmento 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 instalado el fragmento, ingrese 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 es la primera vez que utiliza fragmentos, es posible que vea una advertencia como la siguiente:
This operation requires downloading a recent release of npm. Do you want to proceed? [Y/n]:
Debes instalar npm para usar fragmentos.
Ejecutar un fragmento
Antes de ejecutar un nuevo fragmento, ejecute snippet help <SNIPPET NAME> para obtener más información sobre la funcionalidad del fragmento.
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 fragmento analyze-schema si aún no está presente y pase el nombre de la colección para ejecutarlo.
snippet install analyze-schema schema(db.reservations)
El documento con "_id": 3 se introdujo incorrectamente como cadena. El análisis muestra que el campo reserved contiene elementos de cadena 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
Utilice el comando snippet uninstall para eliminar un fragmento. Si no está seguro del nombre, el comando snippet ls lista todos los fragmentos instalados.
Este código desinstala el fragmento analyze-schema.
snippet uninstall analyze-schema
Encuentre paquetes de fragmentos disponibles
El comando snippet ls devuelve una lista de fragmentos instalados localmente junto con información sobre la versión y el origen.
snippets@ /root/.mongodb/mongosh/snippets ├── mongosh:PRIVATE..DecryptCards@1.0.5 ├── mongosh:analyze-schema@1.0.5 └── npm@7.23.0
Para ver los fragmentos que están disponibles en el registro, primero refresh el caché de metadatos local y luego search.
snippet refresh snippet search
snippet search enumera los fragmentos disponibles, su versión y ofrece 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 enumera cada repositorio.
Snippet repository URL: https://compass.mongodb.com/mongosh/snippets-index.bson.br --> Homepage: https://github.com/mongodb-labs/mongosh-snippets
Obtener ayuda para un fragmento
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 README archivo para el fragmento de mongocompat en la mongosh consola.
# 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 } ```
Cuando cree sus propios paquetes de fragmentos, asegúrese de incluir un README.md archivo que proporcione ayuda útil.