MongoDB 배열에 문서 푸시하기
MongoDB에서 배열 필드에 새로운 문서를 추가하려면 $push 연산자를 update() 메서드와 함께 사용하면 됩니다. 이번 글에서는 실제 예제를 통해 단계별로 살펴보겠습니다.
1. 컬렉션 생성 및 문서 삽입
먼저 insertOne() 메서드를 사용해 컬렉션을 생성하고 문서를 삽입합니다.
> db.demo310.insertOne({"Name":"Chris","details":[{"Id":101,"Subject":"MySQL"},{"Id":102,"Subject":"MongoDB"}]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e50cabdf8647eb59e562043")
}2. 현재 문서 확인
find() 메서드를 사용해 컬렉션의 모든 문서를 조회해 보겠습니다.
> db.demo310.find();
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
{
"_id" : ObjectId("5e50cabdf8647eb59e562043"), "Name" : "Chris", "details" : [
{ "Id" : 101, "Subject" : "MySQL" }, { "Id" : 102, "Subject" : "MongoDB" }
]
}3. $push로 배열에 새 문서 추가
이제 $push 연산자를 사용해 details 배열에 새로운 문서를 추가하는 쿼리를 실행해 보겠습니다.
> db.demo310.update({ _id:ObjectId("5e50cabdf8647eb59e562043")},
...{ $push: {"details": {
... "Id" : 103,
... "Subject": "Java"
... }}
...}
...)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })WriteResult의 nModified 값이 1로 표시되는 것을 통해 하나의 문서가 성공적으로 수정되었음을 확인할 수 있습니다.
4. 업데이트 결과 확인
다시 find() 메서드로 전체 문서를 조회합니다.
> db.demo310.find();
실행 결과, details 배열 끝에 Id가 103인 Java 과목 문서가 새롭게 추가된 것을 볼 수 있습니다.
{
"_id" : ObjectId("5e50cabdf8647eb59e562043"), "Name" : "Chris", "details" : [
{ "Id" : 101, "Subject" : "MySQL" }, { "Id" : 102, "Subject" : "MongoDB" },
{ "Id" : 103, "Subject" : "Java" }
]
}정리
MongoDB에서 배열에 문서를 추가할 때는 $push 연산자가 핵심입니다. 참고로 MongoDB 4.2 이상에서는 update() 대신 updateOne() 또는 updateMany() 메서드를 사용하는 것이 권장되며, 동작 방식은 동일하게 $push와 함께 활용할 수 있습니다.