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].update_one({:name => "itiro"}, '$set' => {:age => 11})
p result
rescue Mongo::Error::NoServerAvailable => e
p e
end
実行結果を確認すると、指定した条件でデータが1件だけ更新されていることが確認できます。
> ruby test.rb
#<Mongo::Operation::Update::Result:0x740 documents=[{"n"=>1, "nModified"=>1, "ok"=>1.0}]>
複数更新
複数の値を更新するには「update_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].update_many({:gender => "m"}, '$set' => {:age => 100})
p result
rescue Mongo::Error::NoServerAvailable => e
p e
end
実行結果
> ruby test.rb
#<Mongo::Operation::Update::Result:0x740 documents=[{"n"=>3, "nModified"=>2, "ok"=>1.0}]>
複数件、更新されていることが確認できます。
-
前の記事
Oracle Database エラー「ORA-01109: データベースがオープンされていません。」が発生した場合の対処法 2022.12.19
-
次の記事
mongoDB mongoシェル上でpwdを実行してカレントディレクトリを確認する 2022.12.19
コメントを書く