Pymongo 배열에 insert, delete

sig03
Jan 10, 2023

--

여러 개발자 선배님들의 도움을 받아 작업한 소스, 인터넷에 찾으면 존재하는 내용인데 다양한 검색어로 찾을 수 있으면 누군가에게 도움이 될 것 같아 남겨본다.

mongodb의 경우 배열 필드에 값을 추가하거나 특정 값만 삭제하는게 업데이트로 가능하다.

rdb로 이를 구현하려면 해당 값을 받아 추가하려는 값을 넣거나 삭제하려는 값을 빼고 다시 업데이트 치는 방법이 있지만 비효율적이라 느껴진다.

{
"data": ["2020", "2021", "2022"]
}

//"2023" 추가

{
"data": ["2020", "2021", "2022", "2023"]
}


//pymongo 소스

data = {
"$push": {
"data": {
"$each": ["2023"]
}
}
}

collection.update_one({}, data)

이때 $each를 해주지 않으면 아래와 같이 배열안에 또 배열로 추가된다.

{
"data": ["2020", "2021", "2022", ["2023"]]
}

삭제도 가능하다. $pull과 $pullAll이 있는데 $pull은 조건을 만족하는 값을 꺼내고, $pullAll은 일치하는 값을 빼낸다고 한다.

빼낸다=삭제

data = {
"$pullAll": {
"data": {
["2023"]
}
}
}

collection.update_one({}, data)

# 참조 https://www.zerocho.com/category/MongoDB/post/57a46d287c4a5115004e97eb

--

--

sig03
sig03

No responses yet