MongoDB 배열에 단일 값 추가하기
MongoDB에서 배열 필드에 단일 값만 추가하고 싶다면 $push 연산자를 사용하면 됩니다. 이 글에서는 실제 예제를 통해 중첩된 문서 구조 안의 배열에 새로운 값을 추가하는 과정을 단계별로 살펴보겠습니다.
1단계: 샘플 컬렉션 생성
먼저 insertOne() 메서드를 사용하여 문서가 포함된 컬렉션을 생성합니다.
> db.demo3.insertOne(
... {
... "Information" : {
... "Of" : {
... "StudentCode" : "STUDENT101",
... "StudentFavouriteSubject" : [
... "MySQL",
... "Java"
... ]
... }
... }
... }
... );
{
"acknowledged" : true,
"insertedId" : ObjectId("5e08b7ef25ddae1f53b6221b")
}위 문서는 학생 코드와 함께 좋아하는 과목 목록을 배열 형태로 저장하고 있습니다. 여기에 새로운 과목 하나를 추가해 보겠습니다.
2단계: find()로 기존 문서 확인
컬렉션에 저장된 모든 문서를 조회하려면 find() 메서드를 사용합니다.
> db.demo3.find();
실행 결과는 다음과 같습니다.
{ "_id" : ObjectId("5e08b7ef25ddae1f53b6221b"), "Information" : { "Of" : { "StudentCode" : "STUDENT101", "StudentFavouriteSubject" : [ "MySQL", "Java" ] } } }3단계: $push로 배열에 값 추가
이제 update() 메서드와 $push 연산자를 조합하여 배열에 단일 값을 추가합니다. 점 표기법(dot notation)을 사용하면 중첩된 문서 내부의 배열 필드에도 접근할 수 있습니다.
> db.demo3.update({},{$push:{"Information.Of.StudentFavouriteSubject":"Spring and Hibernate"}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })결과 메시지에서 nModified : 1은 하나의 문서가 성공적으로 수정되었음을 의미합니다.
4단계: 업데이트 결과 확인
변경된 내용을 눈으로 확인하기 위해 pretty() 메서드를 사용해 문서를 다시 조회해 보겠습니다.
> db.demo3.find().pretty();
출력 결과는 다음과 같습니다.
{
"_id" : ObjectId("5e08b7ef25ddae1f53b6221b"),
"Information" : {
"Of" : {
"StudentCode" : "STUDENT101",
"StudentFavouriteSubject" : [
"MySQL",
"Java",
"Spring and Hibernate"
]
}
}
}정리
이처럼 MongoDB에서는 $push 연산자 하나만으로 배열 끝에 새로운 값을 간단히 추가할 수 있습니다. 참고로 중복 값을 허용하지 않고 싶다면 $addToSet 연산자를 대신 사용하는 것도 좋은 방법입니다. 상황에 맞는 연산자를 선택하여 배열 데이터를 효율적으로 관리해 보세요.