python mongoDBに接続してドキュメントを更新する

python mongoDBに接続してドキュメントを更新する

pythonで、mongoDBに接続してドキュメントを更新するサンプルコードを記述してます。ライブラリ「pymongo」を使用してます。pythonのバージョンは3.9.7を使用してます。

環境

  • OS windows 11 Home
  • python 3.9.7

pymongoインストール

ライブラリ「pymongo」を使用するのでインストールしてない場合は、
「pip」を使ってインストールします。

pipenv install pymongo

サンプルコード

localhostにある「mongoDB」に接続して、以下のドキュメント「foo」にデータに対して更新を行います。

> db.foo.find()

{ "_id" : ObjectId("61c5a13b7bebd717eeaebe63"), "name" : "itiro", "age" : 100, "gender" : "m" }
{ "_id" : ObjectId("61c92c5a4ba1d54e9e93d511"), "name" : "jiro", "age" : 200, "gender" : "m" }
{ "_id" : ObjectId("61c92d32c7e1fefb390adeaf"), "name" : "jiro", "age" : 200, "gender" : "m" }
{ "_id" : ObjectId("61c92d32c7e1fefb390adeb0"), "name" : "saburo", "age" : 300, "gender" : "m" }
{ "_id" : ObjectId("61c9391684c2373d5050becb"), "name" : "jiro", "age" : 50, "gender" : "x" }

「name」が「jiro」のものを更新します。最初の1件だけ更新されます。

from pymongo import MongoClient

client = MongoClient("mongodb://testuser:pwd@localhost:27017")

db = client["huga"]

collection = db["foo"]

collection.update_one({"name": "jiro"}, { "$set": { "name": "nanashi" }})
    
client.close()

データが更新されていることが確認できます。

> db.foo.find()

{ "_id" : ObjectId("61c5a13b7bebd717eeaebe63"), "name" : "itiro", "age" : 100, "gender" : "m" }
{ "_id" : ObjectId("61c92c5a4ba1d54e9e93d511"), "name" : "nanashi", "age" : 200, "gender" : "m" }
{ "_id" : ObjectId("61c92d32c7e1fefb390adeaf"), "name" : "jiro", "age" : 200, "gender" : "m" }
{ "_id" : ObjectId("61c92d32c7e1fefb390adeb0"), "name" : "saburo", "age" : 300, "gender" : "m" }
{ "_id" : ObjectId("61c9391684c2373d5050becb"), "name" : "jiro", "age" : 50, "gender" : "x" }

全て更新

全て更新する場合は「update_many」を使用します。

from pymongo import MongoClient

client = MongoClient("mongodb://testuser:pwd@localhost:27017")

db = client["huga"]

collection = db["foo"]

collection.update_many({"name": "jiro"}, { "$set": { "name": "nanashi" }})
    
client.close()

実行結果

> db.foo.find()

{ "_id" : ObjectId("61c5a13b7bebd717eeaebe63"), "name" : "itiro", "age" : 100, "gender" : "m" }
{ "_id" : ObjectId("61c92c5a4ba1d54e9e93d511"), "name" : "nanashi", "age" : 200, "gender" : "m" }
{ "_id" : ObjectId("61c92d32c7e1fefb390adeaf"), "name" : "nanashi", "age" : 200, "gender" : "m" }
{ "_id" : ObjectId("61c92d32c7e1fefb390adeb0"), "name" : "saburo", "age" : 300, "gender" : "m" }
{ "_id" : ObjectId("61c9391684c2373d5050becb"), "name" : "nanashi", "age" : 50, "gender" : "x" }