Conecte MongoDB con PowerShell

Bilal Shahid 20 junio 2023
  1. Conecte MongoDB con PowerShell usando Mdbc
  2. Use MongoDB con PowerShell directamente
  3. Conclusión
Conecte MongoDB con PowerShell

MongoDB presenta una solución NoSQL para el almacenamiento y la gestión de datos, que consta de documentos representados en estilo JSON. Este lenguaje orientado a documentos es adecuado para ejecutarse con PowerShell, que ofrece una solución de shell de línea de comandos en Microsoft Windows.

Este artículo analizará diferentes formas de conectar MongoDB con PowerShell y usarlo para tareas de MongoDB.

Conecte MongoDB con PowerShell usando Mdbc

Mdbc es un módulo de PowerShell que se utiliza para hacer que las operaciones de MongoDB sean compatibles con PowerShell para ejecutarlas fácilmente en PowerShell. Mdbc se basa en el controlador oficial MongoDB C#.

Para aprender sobre Mdbc, primero debe estar familiarizado con el concepto de cmdlets. Los cmdlets son comandos ligeros que se ejecutan en PowerShell.

También hay cmdlets para MongoDB, que son comandos estándar de PowerShell que facilitan la limpieza de datos, la normalización, la copia de seguridad y otras operaciones de MongoDB.

Para ejecutar MongoDB en PowerShell usando Mdbc, debe seguir una secuencia de pasos simples que se explican a continuación.

Obtener e instalar Mdbc

Mdbc para PowerShell Core y la versión 5.1, .NET 4.7.2 se publica como el módulo PSGallery Mdbc. Para instalar este módulo, debe ejecutar el siguiente comando:

Install-Module Mdbc

Para PowerShell v3-v5.1, .NET 4.7.2, Mdbc se publica como el paquete NuGet Mdbc. Tienes que descargarlo directamente o usar las herramientas NuGet.

Si lo está descargando directamente, debe guardarlo como un archivo .zip, descomprimirlo y usar el subdirectorio del paquete herramientas/Mdbc.

Ahora, copie el directorio Mdbc a cualquier directorio de módulos de PowerShell. Para obtener la ruta del módulo de PowerShell, ejecute este comando $env:PSModulePath.

Nota: La versión de PowerShell que está utilizando debe ser precisa en el rango para que esto funcione. Puede comprobar la versión ejecutando $PSVersionTable.

Importar el Módulo Mdbc

Ahora, ejecute el siguiente comando en PowerShell para importar el módulo Mdbc.

Import-Module Mdbc

Echa un vistazo a la ayuda

Puede ejecutar los siguientes comandos para consultar los tutoriales de ayuda sobre Mdbc.

help about_Mdbc
help Connect-Mdbc -Full
Get-Command -Module Mdbc

Asegúrese de que mongod se esté ejecutando

Para asegurarse de que mongod se está ejecutando, intente ejecutar algunos comandos de MongoDB. Por ejemplo, ejecute lo siguiente para conectarse a una nueva colección prueba.

Connect-Mdbc . test test -NewCollection

Ahora, agregue dos documentos a la colección como datos de prueba.

@{_id = 1; value = 42}, @{_id = 2; value = 3.14} | Add-MdbcData

Con el siguiente comando, recupere los documentos como objetos de PowerShell y muéstrelos como una tabla.

Get-MdbcData -As PS | Format-Table -AutoSize | Out-String

Para recuperar un documento específico por su ID, use el siguiente comando como una expresión de consulta.

$data = Get-MdbcData (New-MdbcQuery _id -EQ 1)
$data

Para actualizar el valor del documento, utilice lo siguiente:

$data._id | Update-MdbcData (New-MdbcUpdate -Set @{value = 100})

Para comprobar si el valor se ha actualizado correctamente, utilice la siguiente consulta:

$doc = Get-MdbcData @{_id = 1}

Intente eliminar el documento ejecutando lo siguiente:

$doc | Remove-MdbcData

Para confirmar que el documento se eliminó correctamente, ejecute el siguiente comando para contar la cantidad de documentos. El resultado esperado es 1 porque solo queda un documento.

Get-MdbcData -Count

Use MongoDB con PowerShell directamente

Anteriormente, discutimos la conexión de MongoDB con PowerShell usando Mdbc. Veamos cómo podemos hacer esto sin él.

Debe descargar el motor MongoDB más reciente y el controlador C# para ejecutarlo con PowerShell. El siguiente paso será crear dos carpetas en la unidad C: de su computadora, C:\data\db.

Ahora, puede iniciar el archivo mongod.exe en la carpeta bin de su instalación de MongoDB. Cuando ejecute mongod, monopolizará el indicador de PowerShell.

Nota: También puede ejecutar MongoDB como un servicio instalándolo usando .\mongod.exe --install --serviceName "Mongod" --serviceDisplayName "Mongo service deamon" --serviceDescription "MongoDB service" --logpath c: \datos\Mongo.log

Para obtener más información, puede escribir el siguiente comando en PowerShell:

mongod.exe help

Ahora, puede abrir su firewall para el puerto 27017 para permitir conexiones a la base de datos MongoDB. El motor de MongoDB se iniciará y ahora puede abrir PowerShell, cargar los controladores de C# y conectarse a la base de datos de MongoDB.

El código es el siguiente:

$mongoDriverPath = "c:\Program Files (x86)\MongoDB\CSharpDriver 1.7"
Add-Type -Path "$($mongoDriverPath)\MongoDB.Bson.dll"
Add-Type -Path "$($mongoDriverPath)\MongoDB.Driver.dll"

Debe recordar que este fragmento de código deberá modificarse de acuerdo con la ruta en su computadora.

Probemos la conexión creando una base de datos y una colección usando los siguientes comandos:

$db = [MongoDB.Driver.MongoDatabase]::Create('mongodb://localhost/profiles');
$coll = $db['example1'];

MongoDB también permite importar datos usando un archivo CSV, TSV o JSON. Para encontrar más información sobre esto, puede ejecutar el siguiente comando (ajustándolo según su ruta).

PS C:\Program Files\MongoDB\Server\3.4\bin> .\mongoimport.exe --help

Veamos ahora cómo podemos crear e insertar un documento BSON en nuestra base de datos.

[MongoDB.Bson.BsonDocument] $doc = @{
"_id"= [MongoDB.Bson.ObjectId]::GenerateNewId();
"FirstName"= "Ali";
"LastName"= "Raza";
"PhoneNumbers"= [MongoDB.Bson.BsonDocument] @{
'Home'= '11223344';
'Mobile'= '55667788';
};
};

Para insertar este documento, utilice lo siguiente:

C:\> $coll.Insert( $doc)

El siguiente comando se puede ejecutar para ejecutar una consulta de actualización:

$query = [MongoDB.Driver.Builders.Query]::Matches( 'FirstName', "Ali")
$update = [MongoDB.Driver.Builders.Update]::Set("Email", 'ali123@abc.org'))
$coll.Update( $query , $update )

O, si desea recuperar los datos en una operación de lectura, use el comando Buscar de esta manera:

$query = [MongoDB.Driver.Builders.Query]::Matches( 'FirstName', "Ali")
$coll.Find( $query )

Conclusión

MongoDB proporciona una solución NoSQL eficiente orientada a documentos para realizar operaciones de base de datos de forma rápida y sencilla. MongoDB se puede ejecutar en PowerShell usando varios métodos, dos de los cuales hemos explicado en este artículo.

¡Esperamos que haya podido comprender los conceptos que entregamos!

Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub