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