見出し画像

MongoDBをWindowsに導入する方法メモ

MonogoDBローカルのWindowsへの導入方法を示します。
MongoDBのバージョンは7.0.5を用いています。

1.MongoDBをインストール

以下リンクより、「MongoDB Community Server Download」をインストールします。


Setup Typeは「Complete」、「Custom」どちらでも問題ありません。

今回は、Windowsサービスとしてインストールするため「Install MongoD as a Service」を選択してインストールします。その次の画面で、「mongodbCompass」にチェックを入れ、MongoDB GUIをインストールします。

インストール後、再起動を行い、サービスが実行されているか確認します。スタートメニュー「サービス」を選択し、

MongoDB Serverが実行されていることを確認します。

2.MongoDBCompassでデータベースに接続する

インストールしたMongoDB Compassをスタートメニューより起動します。以下の画面が立ち上がるので、Connectをクリックしてデータベースに接続ができるかを確認します。

MongoDB Compassがインストールされていない場合は以下リンクよりダウンロードしてください。


MongoDBサービスが起動しており、データベースへ接続できると以下のような画面になり、データベースへの接続が完了します。

3.PowerShellにてDBに接続する

Windowsにて、PowerShellよりMongoDBに接続する場合は、MongoDB Shellをインストールする必要があります。以下リンクよりダウンロードしてください。


インストール後、PowerShellを起動し、「mongosh」を入力することで、MongoDBに接続することができます。

4.Pythonよりデータベースにデータを追加する

MongoDBに、適当な辞書配列データを追加します。

from pymongo import MongoClient
from datetime import datetime

client = MongoClient()
db = client["test_DB"]

data = {'name':'Airi',
        'profile':'AI_gyaru',
        'age':18,
        'create_time':datetime.now()}
responce =  db.test_DB.insert_one(data)
print(responce)

プログラム実行後、MongoDB Compassを確認すると、新しいデータベースが作成され、データが追加されていることが確認できます。

上記コードの場合、データベース名「test_DB」内の、コレクション「test_DB」に保存しています。
コレクションは、データベース内のファイルのような役割をするもので、SQLにおけるテーブルのような役割をします。コレクション内にコレクションを定義することはできません。
コレクション内のJson型式は統一する必要がなく、どんなJsonデータでも追加することが可能です。

またJsonデータの重複も可能です。
デフォルトでは、MongoDBはドキュメント間の内容の重複をチェックしないため、同じ内容のドキュメントをコレクションに複数回挿入することが可能です。ただし、各ドキュメントにはユニークな_idフィールドが自動的に割り当てられます。

5.Pythonを用いたMongoDBサンプルコード

(1)データを検索する

db = client["test_DB"]
collection = db["Test_collection"]

documents = collection.find({"name":"mongo"})

for document in documents:
    print(document)

(2)データを更新する
注意:nameがjohnに該当するすべてのデータにおいて更新を行います。

db = client["test_DB"]
collection = db["Test_collection"]

new_values = {"$set": {"age": 28}}
result = collection.update_one({"name":"John"}, new_values)

print(result.raw_result)

(3)データを消去する

db = client["test_DB"]
collection = db["Test_collection"]

result = collection.delete_one({"name":"John"})

print(result.raw_result)

(3)コレクション内のすべてのデータを取得する

db = client["test_DB"]
collection = db["Test_collection"]

document = {"name": "mongo", "age": 30, "city": "New York"}
collection.insert_one(document)

documents = collection.find({})

for document in documents:
    print(document)

(4)コレクション内のすべてのデータを消去する

db = client["test_DB"]
collection = db["Test_collection"]
result = collection.delete_many({})
print(result.deleted_count, "documents deleted.")

(5)ユニークindexを使って、データが重複しないようにする


collection.create_index([("email", 1)], unique=True)

上記コードはemailにてユニークインデックスを作成し重複するemailを追加した場合は、コレクションにデータを追加できなくなります。

ユニークインデックス管理及び追加は、Codeだけでなく、MongoDB Compassにて管理できます。

データが重複する場合以下のようなレスポンスが返されます。

E11000 duplicate key error collection: test_DB.Test_collection index: name_text dup key: { _fts: "airi", _ftsx: 1.1 }, full error: {'index': 0, 'code': 11000, 'errmsg': 'E11000 duplicate key error collection: test_DB.Test_collection index: name_text dup key: { _fts: "airi", _ftsx: 1.1 }', 'keyPattern': {'_fts': 'text', '_ftsx': 1}, 'keyValue': {'_fts': 'airi', '_ftsx': 1.1}


この記事が気に入ったらサポートをしてみませんか?