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 の場合、Mdbc
は NuGet
パッケージ 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つをこの記事で説明しました。
私たちが提供したコンセプトを理解していただければ幸いです。
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