[Python3] MongoDB

Alexandria·2024년 3월 3일

Python3 Advanced

목록 보기
13/27
post-thumbnail

1. 접속

pymongo을 이용하여 MongoDB 서버로 접속할 수 있습니다.

connector의 속성으로 데이터베이스 명을 지정하여 사용할 수 있으며 connector.get_database(name="test_db")으로 사용해도 됩니다.

import pymongo

connector   = pymongo.MongoClient(host="192.168.0.38", port=27017)
db          = connector.test_db

2. Create

데이터베이스의 속성으로 Collection 명을 지정하여 사용할 수 있으며 db.get_collection(name="tb_user")으로 사용해도 됩니다.

MongoDB의 데이터들은 JSON 형식으로 이루어져 있으며 데이터 생성 후 생성된 ObjectId 값을 반환합니다.

import pymongo

connector   = pymongo.MongoClient(host="192.168.0.38", port=27017)
db          = connector.test_db

user        = {"name":"user1","password":"user1_password"}
inserted_id = db.tb_user.insert_one(document=user).inserted_id
print(inserted_id)

users       = [{"name":"user2","password":"user2_password"}, {"name":"user3","password":"user3_password"}, {"name":"user2","password":"user2_password2"}]
inserted_ids= db.tb_user.insert_many(documents=users).inserted_ids
print(inserted_ids)

print(db.tb_user.count_documents(filter={})) # 4

3. Read

데이터베이스의 속성으로 Collection 명을 지정하여 사용할 수 있으며 db.get_collection(name="tb_user")으로 사용해도 됩니다.

반환된 데이터는 dictionary를 사용하는 것처럼 사용하면 됩니다.

import pymongo

connector   = pymongo.MongoClient(host="192.168.0.38", port=27017)
db          = connector.test_db

user        = db.tb_user.find_one(filter={"name":"user3"})
print(user)

users       = db.tb_user.find(filter={"name":"user2"})
for user in users:
    print(user)

users       = db.tb_user.find(filter={"name":{"$regex":"user"}})
for user in users:
    print(user)

4. Update

데이터베이스의 속성으로 Collection 명을 지정하여 사용할 수 있으며 db.get_collection(name="tb_user")으로 사용해도 됩니다.

update를 표현하는 방법은 다양합니다.

import pymongo

connector   = pymongo.MongoClient(host="192.168.0.38", port=27017)
db          = connector.test_db

modified_count  = db.tb_user.update_one(filter={"name":"user1"}, update={"$set":{"password":"secret_password"}}).modified_count
print(modified_count)

user        = db.tb_user.find_one(filter={"name":"user1"})
print(user)

db.tb_user.update_many(filter={"name":"user2"}, update={"$set":{"password":"secret_password2"}})
users       = db.tb_user.find(filter={"name":"user2"})
for user in users:
    print(user)

5. Delete

데이터베이스의 속성으로 Collection 명을 지정하여 사용할 수 있으며 db.get_collection(name="tb_user")으로 사용해도 됩니다.

삭제된 데이터의 수가 반환됩니다.

import pymongo

connector   = pymongo.MongoClient(host="192.168.0.38", port=27017)
db          = connector.test_db

deleted_count   = db.tb_user.delete_one(filter={"name":"user1"}).deleted_count
print(deleted_count)

user        = db.tb_user.find_one(filter={"name":"user1"})
print(user)

deleted_count   = db.tb_user.delete_many(filter={"name":"user2"}).deleted_count
print(deleted_count)
profile
IT 도서관

0개의 댓글