Utilice las siguientes opciones para ver y controlar diversos aspectos de su MongoDB Shell.
Opciones Generales
--build-infoDevuelve un documento con formato JSON con información sobre su
mongoshDependencias de compilación y controlador.Ejemplo: Ver información de compilación
Se puede verificar la información de compilación y las dependencias de los drivers del binario
mongoshejecutando el siguiente comando desde el terminal:mongosh --build-info Este comando devuelve el siguiente documento en formato JSON:
{ version: '1.10.1', distributionKind: 'packaged', buildArch: 'x64', buildPlatform: 'linux', buildTarget: 'unknown', buildTime: '2023-06-21T09:49:37.225Z', gitVersion: '05ad91b4dd40382a13f27abe1ae8c3f9f52a38f7', nodeVersion: 'v16.20.1', opensslVersion: '3.1.1', sharedOpenssl: true, runtimeArch: 'x64', runtimePlatform: 'darwin', deps: { nodeDriverVersion: '5.6.0' } }
--eval <javascript>Evalúa una expresión de JavaScript. Puedes usar un único argumento
--evalo múltiples argumentos--evaljuntos.Después de que
mongoshevalúa el argumento--eval, imprime los resultados en la línea de comandos. Si se usan varias instrucciones--eval,mongoshsolo imprime los resultados de la última--eval.Puede utilizar la bandera
--jsoncon--evalpara devolvermongoshresultados en Formato JSON extendido.mongoshadmite--json=canonical--json=relaxedlos modos y. Si se omite el modo,mongoshusa elcanonicalmodo por defecto. El--jsonindicador es mutuamente excluyente--shellcon.Ejemplo: Formato de salida
Para obtener una salida adecuada para el análisis automatizado, utiliza
EJSON.stringify().mongosh --quiet --host rs0/centos1104 --port 27500 \ --eval "EJSON.stringify(rs.status().members.map( \ m => ({'id':m._id, 'name':m.name, 'stateStr':m.stateStr})));" \ | jq Después de analizar con
jq, el resultado se asemeja a esto:[ { "id": 0, "name": "centos1104:27500", "stateStr": "PRIMARY" }, { "id": 1, "name": "centos1104:27502", "stateStr": "SECONDARY" }, { "id": 2, "name": "centos1104:27503", "stateStr": "SECONDARY" } ] Nota
EJSONtiene opciones de formato con funcionalidad incorporada que pueden eliminar la necesidad de un analizador comojq. Por ejemplo, el siguiente código produce una salida que tiene el mismo formato que la anterior.mongosh --quiet --host rs0/centos1104 --port 27500 \ --eval "EJSON.stringify( rs.status().members.map( \ ({ _id, name, stateStr }) => ({ _id, name, stateStr })), null, 2);" Ejemplo: Múltiples argumentos --eval
Para obtener una lista de colecciones en el
moviesDatabase, utiliza varias instrucciones--eval:mongosh --quiet \ --eval 'use moviesDatabase' \ --eval 'show collections' \ mongodb://localhost/ Ejemplo: opción --json
Para devolver estadísticas sobre una colección en formato JSON extendido utilizando varias instrucciones
--eval:mongosh --quiet --json=relaxed \ --eval 'use <database-name>' \ --eval 'db.<collection>.stats()' \ mongodb://localhost/
--file, -f <javascript>Ejecuta un script desde la línea de comandos sin entrar en la consola de MongoDB Shell.
Para obtener más detalles y un ejemplo, consulta Ejecutar un script desde la línea de comandos.
--no-quietDesactiva la opción
--quietpor defecto para sesiones de shell no interactivas. Cuando se especifica,mongoshmuestra todos los mensajes durante el inicio.
--quietOmite todos los mensajes durante el inicio (como los mensajes de bienvenida y las advertencias de inicio) y va directamente al prompt.
Para sesiones de shell no interactivas, MongoDB activa
--quietpor defecto. Puedes desactivar este comportamiento usando--no-quiet.
--skipStartupWarningsEvita que
mongoshmuestre advertencias de inicio del servidor al crear una sesión. Para suprimir todos los mensajes de inicio, utiliza la opción--quiet.
--shellActiva la interfaz de shell. Si ejecutas el comando
mongoshy especificas un archivo JavaScript como argumento, o utilizas--evalpara especificar JavaScript en la línea de comandos, la opción--shellproporciona al usuario un indicador de shell después de que el archivo termine de ejecutarse. El indicador--shelles mutuamente excluyente con--json.
Opciones de Stable API
--apiVersion <version number>Especifica la apiVersion.
"1"es actualmente el único valor compatible.
--apiStrictEspecifica que el servidor responderá con APIStrictError si la aplicación utiliza un comando o comportamiento fuera de la Stable API.
Si se especifica
--apiStrict, también debe especificar--apiVersion.
--apiDeprecationErrorsEspecifica que el servidor responderá con APIDeprecationError si la aplicación utiliza un comando o comportamiento que está desactualizado en el
apiVersionespecificado.Si se especifica
--apiDeprecationErrors, también debe especificar--apiVersion.
Opciones de conexión
--host <hostname>Especifica el nombre de la máquina host donde el
mongodomongosse está ejecutando. Si esto no se especifica, MongoDB Shell intenta conectarse a un proceso de MongoDB que se ejecuta en el localhost.- Para conectarte a un set de réplicas,
Especifica el
replica set namey una lista de nodos iniciales del set. Utiliza el siguiente formulario:<replSetName>/<hostname1><:port>,<hostname2><:port>,<...> - Para las conexiones TLS/SSL (
--tls), - El MongoDB Shell verifica que el nombre de host (especificado en la opción
--hosto en la cadena de conexión) coincida con elSAN(o, siSANno está presente, elCN) en el certificado presentado pormongodomongos. SiSANestá presente, MongoDB Shell no comparaCN. Si el nombre de host no coincide con elSAN(o elCN), el shell de MongoDB Shell no se puede conectar.
- Para las conexiones de la lista de nodos iniciales de DNS,
Especifique el protocolo de conexión como
mongodb+srv, seguido del registro de nombre de host DNS SRV y cualquier opción. Las opcionesauthSourceyreplicaSet, si se incluyen en la cadena de conexión, anulan cualquier opción DNS correspondiente configurada en el registro TXT. El uso de la cadena de conexiónmongodb+srv:habilita implícitamente TLS/SSL (normalmente configuradotls=truecon) para la conexión del cliente. La opción TLS se puede desactivar configurandotls=falseen la cadena de consulta.Ejemplo
mongodb+srv://server.example.com/?connectionTimeoutMS=3000
--port <port>Especifique el puerto donde la
mongodomongosinstancia está escuchando. Si--portno se especifica, MongoDB Shell intenta conectarse al puerto27017.
Opciones de TLS
--tlsPermite la conexión a un
mongodomongosque tenga activado el soporte de TLS / SSL.Para aprender más sobre TLS/SSL y MongoDB, consulta:
--tlsCertificateKeyFile <filename>Especifica el archivo
.pemque contiene tanto el certificado TLS / SSL como la clave paramongosh. Especifica el nombre del archivo.pemutilizando rutas relativas o absolutas.Esta opción es obligatoria cuando se utiliza la opción
--tlspara conectarse a una instanciamongodomongosque requiere certificados de cliente. Es decir, MongoDB Shell presenta este certificado al servidor.Nota
Para aprender más sobre TLS/SSL y MongoDB, consulta:
--tlsCertificateKeyFilePassword <value>Especifica la contraseña para descifrar el archivo de clave del certificado (es decir,
--tlsCertificateKeyFile).Utiliza la opción
--tlsCertificateKeyFilePasswordsolo si el archivo de clave del certificado está cifrado. En todos los casos, el MongoDB Shell elimina la contraseña de todos los registros y reportes de salida.Si la llave privada del archivo PEM está
--tlsCertificateKeyFilePasswordy no especifica la opción cifrada; MongoDB Shell solicitará una frase de contraseña.Consulta la frase de contraseña del certificado TLS/SSL.
Para aprender más sobre TLS/SSL y MongoDB, consulta:
--tlsCAFile <filename>Especifique el archivo
.pemque contiene la cadena de certificados raíz de la Autoridad Certificadora. Este archivo se utiliza para validar el certificado presentado por la instanciamongod/mongos.Especifica el nombre del archivo
.pemutilizando rutas relativas o absolutas.Para aprender más sobre TLS/SSL y MongoDB, consulta:
--tlsCRLFile <filename>Especifica el archivo
.pemque contiene la Lista de revocación de certificados. Especifica el nombre del archivo.pemcon rutas relativas o absolutas.Para aprender más sobre TLS/SSL y MongoDB, consulta:
--tlsAllowInvalidHostnamesDesactiva la validación de los nombres de host en el certificado presentado por la instancia
mongod/mongos. Permite que MongoDB Shell se conecte a instancias de MongoDB incluso si el nombre de host en los certificados del servidor no coincide con el host del servidor.Para aprender más sobre TLS/SSL y MongoDB, consulta:
--tlsAllowInvalidCertificatesNuevo en la versión 4.2.
Omite las comprobaciones de validación de los certificados presentados por la instancia
mongod/mongosy permite conexiones a servidores que presentan certificados inválidos.Nota
A partir de MongoDB 4.0, si especifica
--tlsAllowInvalidCertificatesal usar la autenticación x.509, un certificado no válido es suficiente solo para establecer una conexión TLS / SSL, pero es insuficiente para la autenticación.Advertencia
Aunque esté disponible, evita usar la opción
--tlsAllowInvalidCertificatessi es posible. Si es necesario el uso de--tlsAllowInvalidCertificates, utiliza la opción solo en sistemas donde no sea posible la intrusión.Si el shell de MongoDB Shell (y otras herramientas de MongoDB) se ejecuta con la opción
--tlsAllowInvalidCertificates, el shell (y otras herramientas de MongoDB) no intentan validar los certificados del servidor. Esto crea una vulnerabilidad a certificadosmongodymongoscaducados, así como a procesos externos que se hagan pasar por instancias válidas demongodomongos. Si solo necesitas desactivar la validación del nombre de host en los certificados TLS / SSL, consulta--tlsAllowInvalidHostnames.Para aprender más sobre TLS/SSL y MongoDB, consulta:
--tlsCertificateSelector <parameter>=<value>Disponible en Windows y macOS como alternativa a
--tlsCertificateKeyFile.Importante
Windows e importación de llaves privadas
Cuando importes la llave privada, se debe marcar como exportable. El Asistente para importar certificados de Windows no selecciona esta opción por defecto.
![Asistente de Importación de Certificados de Microsoft donde la clave está marcada como exportable]()
Las opciones
--tlsCertificateKeyFiley--tlsCertificateSelectorson mutuamente excluyentes. Solo puedes especificar uno.Especifica una propiedad de certificado para seleccionar un certificado coincidente de los almacenes de certificados del sistema operativo.
--tlsCertificateSelectoracepta un argumento en el formato<property>=<value>donde la propiedad puede ser una de las siguientes:PropiedadTipo de valorDescripciónsubjectstring ASCII
Nombre del sujeto o nombre común en el certificado
thumbprintcadena hexadecimal
Una secuencia de bytes, expresada en hexadecimal, utilizada para identificar una llave pública mediante su resumen SHA-1.
El
thumbprinta veces se conoce comofingerprint.Al utilizar el almacén de certificados SSL del sistema, se emplea OCSP (Protocolo de estado de certificados en línea) para validar el estado de revocación de los certificados.
--tlsDisabledProtocols <string>Desactiva protocolos TLS especificados. La opción reconoce los siguientes protocolos:
TLS1_0TLS1_1TLS1_2(A partir de la versión 4.0.4, 3.6.9, 3.4.24)
TLS1_3En macOS, no puede desactivar
TLS1_1y dejar ambosTLS1_0yTLS1_2activados. También debes desactivar al menos uno de los otros dos; por ejemplo,TLS1_0,TLS1_1.Para enumerar varios protocolos, especifíquelos como una lista de protocolos separados por comas. Por ejemplo
TLS1_0,TLS1_1.Los protocolos deshabilitados especificados anulan cualquier protocolo deshabilitado por defecto.
A partir de la versión 4.0, MongoDB desactiva el uso de TLS 1.0 si TLS 1.1+ está disponible en el sistema. Para activar el TLS desactivado 1.0, especifica
noneen--tlsDisabledProtocols.
--tlsUseSystemCAPermite a
mongoshcargar certificados TLS ya disponibles para la autoridad de certificación del sistema operativo sin especificar explícitamente los certificados al shell. No puedes desactivar este comportamiento.--tlsUseSystemCAaún se puede establecer para compatibilidad retroactiva, pero no tiene efecto.Nota
Esta bandera se aplica tanto a las conexiones de MongoDB como a las conexiones de los proveedores de identidad OIDC.
Opciones de autenticación
--authenticationDatabase <dbname>Especifica la base de datos de autenticación donde se ha creado el
--usernameespecificado. Consultar la base de datos de autenticación.Si no especifica un valor para
--authenticationDatabase, MongoDB Shell utiliza la base de datos especificada en la cadena de conexión.
--authenticationMechanism <name>Especifica el mecanismo de autenticación que utiliza MongoDB Shell para autenticarse en el
mongodo en elmongos. Si no especificas unauthenticationMechanismpero proporcionas las credenciales de usuario, MongoDB Shell y los controladores intentarán usar SCRAM-SHA-256. Si esto falla, recurren a SCRAM-SHA-1.ValorDescripciónSolicitud de comentarios 5802 Mecanismo de autenticación de respuesta de desafío salado estándar que utiliza la función hash SHA-1.
RFC 7677 estándar del mecanismo de autenticación de respuesta a desafío salado utilizando la función de hash SHA-256.
Se debe establecer featureCompatibilityVersion en
4.0.Autenticación de certificados TLS / SSL de MongoDB.
GSSAPI (Kerberos)
Autenticación externa utilizando Kerberos. Este mecanismo está disponible solo en MongoDB Enterprise.
PLAIN (SASL LDAP)
Autenticación externa mediante LDAP. También puedes utilizar
PLAINpara autenticar a los usuarios de base de datos.PLAINtransmite contraseñas en texto sin formato. Este mecanismo está disponible en MongoDB Enterprise y MongoDB Atlas.MONGODB-OIDC (OpenID Connect)
Autenticación externa utilizando OpenID Connect. Este mecanismo está disponible en MongoDB Enterprise y MongoDB Atlas.
MONGODB-AWS(AWS IAM)Autenticación externa mediante credenciales de Amazon Web Services Identity and Access Management (AWS IAM). Este mecanismo está disponible en MongoDB Enterprise y MongoDB Atlas.
--gssapiServiceNameEspecifica el nombre del servicio mediante GSSAPI/Kerberos. Solo es necesario si el servicio no utiliza el nombre por defecto de
mongodb.Esta opción solo está disponible en MongoDB Enterprise.
--sspiHostnameCanonicalization <string>Especifica si se debe utilizar la canonicalización de nombres de host.
--sspiHostnameCanonicalizationtiene el mismo efecto que establecer el par de clavesCANONICALIZE_HOST_NAME:true|falseen la secciónauthMechanismPropertiesde la cadena de conexión.Si
--sspiHostnameCanonicalizationse establece en:forwardAndReverse, realiza una búsqueda directa de DNS y luego una búsqueda inversa. Nuevo enmongosh1.3.0.forward, el efecto es el mismo que al configurarauthMechanismProperties=CANONICALIZE_HOST_NAME:true.none, el efecto es el mismo que al configurarauthMechanismProperties=CANONICALIZE_HOST_NAME:false.
--oidcFlowsEspecifica los flujos de OpenID Connect en una lista separada por comas. Los flujos de OpenID Connect especifican la interacción de
mongoshcon el proveedor de identidad para el proceso de autenticación.mongoshadmite los siguientes flujos de OpenID Connect:Flujo de OpenID ConnectDescripciónauth-codePor defecto.
mongoshabre un navegador y hace el redireccionamiento a la pantalla para iniciar sesión del proveedor de identidad.device-authmongoshte proporciona una URL y un código para completar la autenticación. Esto se considera un flujo de OpenID Connect menos seguro, pero se puede utilizar cuandomongoshse ejecuta en un entorno en el que no se puede abrir un navegador.Para establecer
device-authcomo opción de respaldo paraauth-code, consulta el siguiente ejemplo:mongosh 'mongodb://localhost/' --authenticationMechanism MONGODB-OIDC --oidcFlows=auth-code,device-auth
--oidcDumpTokensEspecifica si
mongoshimprime tokens con información extra de depuración. Utiliza esta opción solo para fines de depuración.La opción
--oidcDumpTokensacepta los siguientes valores:ValorDescripciónredactedPor defecto cuando solo se configura
--oidcDumpTokens. Imprime la información de depuración de tokens con los datos sensibles redactados.include-secretsImprime información de depuración de tokens, incluidas las credenciales que podrían autenticar potencialmente a los servidores de bases de datos.
Importante
El valor
include-secretsexpone credenciales que los atacantes pueden usar para la autenticación. Utilice esta opción solo cuando las personas no autorizadas no puedan ver el resultado demongoshy las credenciales sean necesarias para fines de diagnóstico.
--oidcIdTokenAsAccessTokenEspecifica si
mongoshutiliza el token de ID recibido del proveedor de identidad en lugar del token de acceso. Utiliza esta opción con proveedores de identidad que no puedas configurar para proporcionar tokens de acceso JWT.
--oidcNoNoncePor defecto,
mongoshenvía un parámetro nonce durante el flujo de código de autorización de OIDC.Si se establece la opción
--oidcNoNonce,mongoshno envía un parámetro nonce. Se debe usar esta opción si el proveedor de identidad no admite valores nonce como parte de la autorización.
--oidcRedirectUriEspecifica una URI donde el proveedor de identidad redirige después de la autenticación. La URI debe coincidir con la configuración del proveedor de identidad. El valor es por defecto
http://localhost:27097/redirect.
--oidcTrustedEndpointIndica que la conexión actual es a un punto final confiable que no es Atlas ni
localhost. Esto asegura que los tokens de acceso sean enviados al servidor. Se debe usar esta opción solo cuando se realice la conexión a servidores en los que se confíe.
--browserEspecifica el navegador al que
mongoshredirige cuandoMONGODB-OIDCestá activado.Esta opción se ejecuta con el shell del sistema.
Establece
--no-browserpara desactivar la apertura de navegadores por completo.
--password <password>, -p <password>Especifica una contraseña con la que autenticarse en una base de datos de MongoDB que utiliza autenticación. Utiliza en conjunto con las
--usernamey--authenticationDatabaseopciones.Para forzar que MongoDB Shell solicite una contraseña, introduce la opción
--passwordcomo última opción y omite el argumento.
--username <username>, -u <username>Especifica un nombre de usuario con el cual autenticarte en una base de datos MongoDB que utiliza autenticación. Utilízalo en conjunto con las
--passwordy--authenticationDatabaseopciones.
Opciones de sesión
--retryWritesActiva Escrituras reintentables.
Por defecto, las escrituras reintentables son:
activado en
mongoshdesactivado en el shell
mongoheredado
Para desactivar las escrituras reintentables, utiliza
--retryWrites=false.Para obtener más información sobre las sesiones, consulta Sesiones de cliente y garantías de coherencia causal.
Opciones de cifrado a nivel de campo
--cryptSharedLibPath <string>Nuevo en la versión 8.2.
La ruta a la Biblioteca compartida de cifrado automático. La biblioteca debe ser versión 8.2.0 o superior. Es necesario utilizar el cifrado automático para la sesión del shell
mongosh.
--awsAccessKeyId <string>Una clave de acceso de AWS asociada con un usuario de IAM que tiene permisos
ListyReadpara el Key Management Service (KMS) de AWS.mongoshutiliza el--awsAccessKeyIdespecificado para acceder al KMS.--awsAccessKeyIdes necesario para activar el cifrado a nivel de campo del lado del cliente para la sesión de shell demongosh.--awsAccessKeyIdrequiere ambas de las siguientes opciones de línea de comandos:Si se omite
--awsAccessKeyId, utiliza el constructorMongo()dentro de la sesión de shell para activar el cifrado a nivel de campo del lado del cliente.Para mitigar el riesgo de filtración de claves de acceso en los registros, considera especificar una variable de entorno para
--awsAccessKeyId.
--awsSecretAccessKey <string>Una clave secreta de AWS asociada al
--awsAccessKeyIdespecificado.Se requiere
--awsSecretAccessKeypara activar el cifrado a nivel de campo del lado del cliente para la sesión demongosh.--awsSecretAccessKeyrequiere ambas de las siguientes opciones de línea de comandos:Si
--awsSecretAccessKeyy tus opciones de soporte se omiten, utilizaMongo()dentro de la sesión del shell para activar el cifrado a nivel de campo del lado del cliente.Para mitigar el riesgo de filtración de claves de acceso en los registros, considera especificar una variable de entorno para
--awsSecretAccessKey.
--awsSessionToken <string>Un Token de sesión de AWS asociado a la
--awsAccessKeyIdespecificada.--awsSessionTokenes necesario para activar el cifrado a nivel de campo del lado del cliente para la sesión de shell demongosh.--awsSessionTokenrequiere todas las siguientes opciones de línea de comandos:Si
--awsSessionTokeny tus opciones de soporte se omiten, utilizaMongo()dentro de la sesión del shell para activar el cifrado a nivel de campo del lado del cliente.Para mitigar el riesgo de filtración de claves de acceso en los registros, considera especificar una variable de entorno para
--awsSessionToken.
--keyVaultNamespace <string>El namespace completo (
<database>.<collection>) de la colección utilizada como almacén de claves para el cifrado a nivel de campo del lado del cliente. Se requiere--keyVaultNamespacepara activar el cifrado a nivel de campo del lado del cliente para la sesión de shellmongosh.mongoshcrea el namespace especificado si no existe.--keyVaultNamespacerequiere ambas de las siguientes opciones de línea de comandos:Si
--keyVaultNamespacey sus opciones de soporte se omiten, utiliza el constructorMongo()dentro de la sesión de shell para activar el cifrado a nivel de campo del lado del cliente.
