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!
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