안녕하세요~ 오늘은 mongoDB에 데이터를 update하는 방법에 대해 기록해보려고 합니다!
저는 id가 2이고 movie가 닥터스트레인지2 였던 데이터 값 중 movie를 닥터스트레인지1로 update해보도록 하겠습니다~
update_item_one, update_item_many
def test_update_movie(id, movie):
mongo = get_client()
filter_val = { "id" : id }
update_val = { "$set" : {'movie':movie} }
list = update_item_many(mongo, filter_val, update_val, 'test', 'movie')
print(f'{list}')
test_update_movie('1', '범죄도시')
log 샷 ✔
<pymongo.results.UpdateResult object at 0x00000222364B3FD0>
db 샷 ✔
저는 id가 2인 데이터 channels-cid값에 배열로 해당값을 'channels TV1', 'channels TV2', 'channels TV3' 추가하여 update해보도록 하겠습니다!
def test_update_movie(id, cid):
mongo = get_client()
add_cid_movie = []
for cid_data in cid:
filter_val = { "id" : id }
update_val = { '$push' : {'channels' : {'cid' : cid_data}} }
list = update_item_many(mongo, filter_val, update_val, 'test', 'movie')
add_cid_movie.append(list)
print(f'{add_cid_movie}')
test_update_movie('2', ['channels TV1', 'channels TV2', 'channels TV3'])
log 샷 ✔
[<pymongo.results.UpdateResult object at 0x000002054EE543A0>, <pymongo.results.UpdateResult object at 0x000002054EE547C0>, <pymongo.results.UpdateResult object at 0x000002054EE54850>]
DB 샷 ✔
저는 id가 2이고 channels에 cid가 SCREN1인 값만을 update로 지워보도록 하겠습니다!
def test_del_group(id, cid):
mongo = get_client()
del_cid_group = []
for data in cid:
# t_cid = data['cid']
filter_val = { "id" : id }
unset_val = { "$pull" : { "channels" : {"cid" : data} } }
list = update_item_many(mongo, filter_val, unset_val, 'test', 'movie')
del_cid_group.append(list)
print(f'{data}')
print(f'{cid}')
print(f'{del_cid_group}')
test_del_group('2', ['SCREN1'])
log 샷 ✔
SCREN1
['SCREN1'][<pymongo.results.UpdateResult object at 0x000001C617F445E0>]
DB 샷 ✔
SCREN1 값이 사라진게 눈에 보이시죠??
어떻게하면 좋을까요? 별거 없어요~ 위에 소스에서 그냥 함수 부를때 넘겨주는 파라미터값에 지울 데이터만 추가해주면 됩니다~~
def test_del_group(id, cid):
mongo = get_client()
del_cid_group = []
for data in cid:
# t_cid = data['cid']
filter_val = { "id" : id }
unset_val = { "$pull" : { "channels" : {"cid" : data} } }
list = update_item_many(mongo, filter_val, unset_val, 'test', 'movie')
del_cid_group.append(list)
print(f'{data}')
print(f'{cid}')
print(f'{del_cid_group}')
test_del_group('2', ['channels TV1', 'channels TV2', 'channels TV3'])
바로 요렇게요!! 위에랑 달라진 부분은 마지막 줄에 파라미터 값만 입니다~
db를 확인해볼까요?
DB 샷 ✔