MongoDB에서 배열에 데이터를 추가하려면 어떻게 해야 할까요?
MongoDB에서 기존 배열 필드에 새로운 요소를 추가하고 싶다면 $push 연산자를 사용하면 됩니다. 이 글에서는 실제 예제를 통해 $push 연산자의 사용 방법을 단계별로 살펴보겠습니다.
1. 테스트용 컬렉션 생성 및 문서 삽입
먼저 insertOne() 메서드를 사용하여 친구 목록을 담은 문서를 컬렉션에 삽입해 보겠습니다.
> db.demo445.insertOne({"ListOfFriends":["Robert","Mike","Sam","Carol","David","Mike"]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e78f099bbc41e36cc3caec2")
}2. 삽입된 문서 확인하기
find() 메서드를 사용하여 컬렉션의 모든 문서를 조회합니다.
> db.demo445.find().pretty();
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
{
"_id" : ObjectId("5e78f099bbc41e36cc3caec2"),
"ListOfFriends" : [
"Robert",
"Mike",
"Sam",
"Carol",
"David",
"Mike"
]
}3. $push 연산자로 배열에 새 요소 추가하기
이제 $push 연산자를 사용하여 ListOfFriends 배열에 새로운 이름인 "Chris Brown"을 추가해 보겠습니다.
> db.demo445.update(
... { _id: ObjectId("5e78f099bbc41e36cc3caec2") },
... { $push: { ListOfFriends: "Chris Brown" } }
... )
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })실행 결과를 보면 nMatched: 1, nModified: 1이 반환되었으므로, 조건에 일치하는 문서 하나가 성공적으로 수정되었다는 의미입니다.
4. 업데이트 결과 확인하기
다시 한번 find() 메서드로 문서를 조회하여 변경 사항을 확인해 보겠습니다.
> db.demo445.find().pretty();
출력 결과는 다음과 같습니다.
{
"_id" : ObjectId("5e78f099bbc41e36cc3caec2"),
"ListOfFriends" : [
"Robert",
"Mike",
"Sam",
"Carol",
"David",
"Mike",
"Chris Brown"
]
}정리 및 추가 팁
위 예제에서 확인했듯이, MongoDB에서 배열에 요소를 추가하는 것은 전혀 어렵지 않습니다. 핵심은 $push 연산자를 update() 또는 updateOne() 메서드와 함께 사용하는 것입니다.
참고로 몇 가지 유용한 팁을 덧붙이자면:
중복 방지: 배열에 이미 존재하는 값의 중복 추가를 막고 싶다면 $addToSet 연산자를 사용하세요. 위 예제의 "Mike"처럼 동일한 값이 여러 번 들어갈 수 있는데, $addToSet을 사용하면 이런 중복을 자동으로 방지할 수 있습니다.
여러 요소 한 번에 추가: $each 수정자와 함께 사용하면 여러 값을 한 번의 작업으로 배열에 추가할 수 있습니다. 예를 들어 { $push: { ListOfFriends: { $each: ["John", "Jane"] } } } 형태로 작성하면 됩니다.
최신 문법 권장: 예제에서 사용된 update()는 구버전 메서드이므로, 실제 프로젝트에서는 updateOne() 또는 updateMany()를 사용하는 것이 좋습니다.