MongoDB を PowerShell に接続する

Bilal Shahid 2023年6月20日
  1. Mdbc を使用して MongoDB と PowerShell を接続する
  2. PowerShell で MongoDB を直接使用する
  3. まとめ
MongoDB を PowerShell に接続する

MongoDB は、JSON スタイルで表現されたドキュメントで構成される、データの保存と管理のための NoSQL ソリューションを導入しています。 このドキュメント指向の言語は、Microsoft Windows でコマンドライン シェル ソリューションを提供する PowerShell で実行するのに適しています。

この記事では、MongoDB を PowerShell に接続し、それを MongoDB タスクに使用するさまざまな方法について説明します。

Mdbc を使用して MongoDB と PowerShell を接続する

Mdbc は、MongoDB 操作を PowerShell フレンドリーにして、PowerShell 上で簡単に実行できるようにするために使用される PowerShell モジュールです。 Mdbc は公式の MongoDB C# ドライバーに基づいています。

Mdbc について学習するには、まずコマンドレットの概念を理解する必要があります。 コマンドレットは、PowerShell で実行される軽量のコマンドです。

また、MongoDB 用のコマンドレットもあります。これは、データのクレンジング、正規化、バックアップ、およびその他の MongoDB 操作を簡単に実行できる標準の PowerShell コマンドです。

Mdbc を使用して PowerShell で MongoDB を実行するには、以下で説明する一連の簡単な手順に従う必要があります。

Mdbc を入手してインストールする

PowerShell Core およびバージョン 5.1、.NET 4.7.2 用のMdbcは、PSGalleryモジュールMdbcとして公開されています。 このモジュールをインストールするには、次のコマンドを実行する必要があります。

Install-Module Mdbc

PowerShell v3-v5.1、.NET 4.7.2 の場合、MdbcNuGet パッケージ Mdbc として公開されています。 直接ダウンロードするか、NuGet ツールを使用する必要があります。

直接ダウンロードする場合は、.zip ファイルとして保存し、解凍して、パッケージ サブディレクトリ tools/Mdbc を使用する必要があります。

ここで、Mdbc ディレクトリを任意の PowerShell モジュール ディレクトリにコピーします。 PowerShell モジュール パスを取得するには、このコマンド $env:PSModulePath を実行します。

注: 使用している PowerShell のバージョンは、これが機能する範囲内で正確である必要があります。 $PSVersionTable を実行すると、バージョンを確認できます。

Mdbc モジュールをインポートする

ここで、PowerShell で次のコマンドを実行して Mdbc モジュールをインポートします。

Import-Module Mdbc

ヘルプを見てみる

次のコマンドを実行して、Mdbc に関するヘルプ チュートリアルを参照できます。

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

mongod が実行されていることを確認する

mongod が実行されていることを確認するには、いくつかの MongoDB コマンドを実行してみてください。 たとえば、次のコマンドを実行して、新しいコレクション test に接続します。

Connect-Mdbc . test test -NewCollection

ここで、2つのドキュメントをテスト データとしてコレクションに追加します。

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

次のコマンドを使用して、ドキュメントを PowerShell オブジェクトとして取得し、テーブルとして表示します。

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

ID で特定のドキュメントを取得するには、次のコマンドをクエリ式として使用します。

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

ドキュメントの値を更新するには、次を使用します。

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

値が正常に更新されたかどうかを確認するには、次のクエリを使用します。

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

次のコマンドを実行して、ドキュメントの削除を試みます。

$doc | Remove-MdbcData

ドキュメントが正常に削除されたことを確認するには、次のコマンドを実行してドキュメントの数をカウントします。 残っているドキュメントは 1つだけなので、期待される出力は 1 です。

Get-MdbcData -Count

PowerShell で MongoDB を直接使用する

以前、Mdbc を使用して MongoDB と PowerShell を接続することについて説明しました。 それなしでこれを行う方法を見てみましょう。

PowerShell で実行するには、最新の MongoDB エンジンと C# ドライバーをダウンロードする必要があります。 次のステップでは、コンピューターの C: ドライブに 2つのフォルダー C:\data\db を作成します。

これで、MongoDB インストールの bin フォルダーにある mongod.exe ファイルを開始できます。 mongod を実行すると、PowerShell プロンプトが独占されます。

注: .\mongod.exe --install --serviceName "Mongod" --serviceDisplayName "Mongo service deamon" --serviceDescription "MongoDB service" --logpath c: を使用してインストールすることにより、MongoDB をサービスとして実行することもできます。 \data\Mongo.log

詳細については、PowerShell で次のコマンドを入力できます。

mongod.exe help

これで、ポート 27017 のファイアウォールを開いて、MongoDB データベースへの接続を許可できます。 MongoDB エンジンが起動し、PowerShell を開いて C# ドライバーをロードし、MongoDB データベースに接続できるようになります。

コードは次のとおりです。

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

このコード スニペットは、コンピューターのパスに応じて変更する必要があることに注意してください。

次のコマンドを使用してデータベースとコレクションを作成し、接続をテストしてみましょう。

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

MongoDB では、CSV、TSV、または JSON ファイルを使用してデータをインポートすることもできます。 これに関する詳細を確認するには、次のコマンドを実行します (パスに応じて調整します)。

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

BSON ドキュメントを作成してデータベースに挿入する方法を見てみましょう。

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

このドキュメントを挿入するには、次を使用します。

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

次のコマンドを実行して、更新クエリを実行できます。

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

または、読み取り操作でデータを取得する場合は、次のように Find コマンドを使用します。

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

まとめ

MongoDB は、効率的なドキュメント指向の NoSQL ソリューションを提供し、データベース操作を迅速かつ簡単に実行します。 MongoDB は、さまざまな方法を使用して PowerShell で実行できます。そのうちの 2つをこの記事で説明しました。

私たちが提供したコンセプトを理解していただければ幸いです。

著者: Bilal Shahid
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