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

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

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와 함께 활용할 수 있습니다.