Computer >> 컴퓨터 >  >> 프로그래밍 >> MongoDB

MongoDB $push 연산자로 배열에 요소 추가하는 방법

MongoDB에서 $push 연산자는 기존 배열 필드에 새로운 요소를 추가할 때 사용하는 강력한 업데이트 연산자입니다. 이 글에서는 실제 예제를 통해 $push를 활용해 배열에 값을 추가하는 방법을 단계별로 살펴보겠습니다.

1. 컬렉션 생성 및 문서 삽입

먼저 insertOne() 메서드를 사용하여 컬렉션을 생성하고 문서를 삽입합니다. 각 문서에는 과목(Subjects) 배열이 포함되어 있습니다.

> db.demo738.insertOne({Subjects:["C","C++"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5ead696557bb72a10bcf0661")
}
> db.demo738.insertOne({Subjects:["MySQL","PL/SQL"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5ead696657bb72a10bcf0662")
}

2. find() 메서드로 전체 문서 조회

find() 메서드를 사용하면 컬렉션의 모든 문서를 확인할 수 있습니다.

> db.demo738.find();

위 쿼리를 실행하면 다음과 같은 출력 결과가 나타납니다.

{ "_id" : ObjectId("5ead696557bb72a10bcf0661"), "Subjects" : [ "C", "C++" ] }
{ "_id" : ObjectId("5ead696657bb72a10bcf0662"), "Subjects" : [ "MySQL", "PL/SQL" ] }

3. $push로 배열에 새 요소 추가

이제 $push 연산자를 사용하여 특정 문서의 Subjects 배열에 "MongoDB"라는 값을 추가해 보겠습니다. _id로 대상 문서를 지정한 뒤 업데이트를 수행합니다.

> db.demo738.update({_id:ObjectId("5ead696657bb72a10bcf0662")},{$push:{"Subjects":"MongoDB"}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

실행 결과에서 nModified : 1은 하나의 문서가 성공적으로 수정되었음을 의미합니다.

4. 업데이트 결과 확인

다시 find() 메서드로 전체 문서를 조회해 변경 사항을 확인합니다.

> db.demo738.find();

출력 결과는 다음과 같습니다.

{ "_id" : ObjectId("5ead696557bb72a10bcf0661"), "Subjects" : [ "C", "C++" ] }
{ "_id" : ObjectId("5ead696657bb72a10bcf0662"), "Subjects" : [ "MySQL", "PL/SQL", "MongoDB" ] }

두 번째 문서의 Subjects 배열 끝에 "MongoDB"가 성공적으로 추가된 것을 확인할 수 있습니다.

정리

$push 연산자는 MongoDB에서 배열 필드에 데이터를 동적으로 추가하는 가장 기본적이고 널리 사용되는 방법입니다. 참고로 최신 버전의 MongoDB에서는 update() 대신 updateOne() 또는 updateMany() 메서드를 사용하는 것이 권장됩니다. 또한 중복 값을 허용하지 않으려면 $addToSet 연산자를 대안으로 고려할 수 있습니다.