Ruby mongoDBに接続してドキュメントを削除する

Ruby mongoDBに接続してドキュメントを削除する

Rubyで、mongoDBに接続してドキュメントを削除するソースコードを記述してます。ライブラリ「mongo」を使用して実装してます。また実際に、実行した結果をキャプチャして掲載してます。

環境

  • OS windows11 home
  • ruby ruby 3.0.3p157 (2021-11-24 revision 3fb7d2cadc) [x64-mingw32]
  • mongoDB 5.2.0
  • vscode 1.63.2

mongoインストール

ライブラリ「mongo」を使います。ない場合は「gem」を使ってインストールしておきます。

gem install mongo

サンプルコード

localhostにある「mongoDB」に接続して、以下のDB「hoge」にあるコレクション「foo」のドキュメントを使用して、サンプルコードを実行してみます。


ここでは「test.rb」という名前で作成してます。条件を指定して、1件だけ削除するコードを作成してみます。

require "mongo"

Mongo::Logger.logger.level = ::Logger::FATAL

begin
  c = Mongo::Client.new(["127.0.0.1:27017"])

  d = c.use("hoge")

  result = d[:foo].delete_one({:gender => "m"})

  p result
  
rescue Mongo::Error::NoServerAvailable => e
  
  p e

end

実行結果を確認すると、指定した条件でデータが1件だけ削除されていることが確認できます。

> ruby test.rb
#<Mongo::Operation::Delete::Result:0x740 documents=[{"n"=>1, "ok"=>1.0}]>

複数削除

複数の値を削除するには「insert_many」を使用します。

require "mongo"

Mongo::Logger.logger.level = ::Logger::FATAL

begin
  c = Mongo::Client.new(["127.0.0.1:27017"])

  d = c.use("hoge")

  result = d[:foo].delete_many({:gender => "m"})

  p result
  
rescue Mongo::Error::NoServerAvailable => e
  
  p e

end

実行結果

> ruby test.rb
#<Mongo::Operation::Delete::Result:0x740 documents=[{"n"=>2, "ok"=>1.0}]>

複数件、削除されていることが確認できます。