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

MongoDB update() 메서드로 컬렉션의 기존 문서를 업데이트하는 방법

MongoDB에서 컬렉션(collection)에 저장된 기존 문서(document)를 업데이트하거나 수정하려면 update() 메서드를 사용해야 합니다. 기본 문법은 다음과 같습니다.

db.yourCollectionName.update(yourExistingValue, yourUpdatedValue);

첫 번째 인자에는 변경할 대상을 찾기 위한 조건을, 두 번째 인자에는 적용할 변경 내용을 지정합니다.

컬렉션 생성 및 문서 삽입

먼저 'updateInformation'이라는 이름의 컬렉션을 만들어 보겠습니다. MongoDB는 별도의 컬렉션 생성 명령 없이도 insert() 메서드로 문서를 삽입하면 컬렉션을 자동으로 생성해 줍니다.

> db.updateInformation.insert({"StudentName":"Larry",StudentAge:35,StudentMarks:89});

실행 결과는 다음과 같습니다.

WriteResult({ "nInserted" : 1 })

삽입된 문서 확인하기

find() 메서드를 사용하면 updateInformation 컬렉션에 저장된 문서를 조회할 수 있습니다.

> db.updateInformation.find();

앞서 삽입한 문서가 정상적으로 저장된 것을 출력 결과에서 확인할 수 있습니다.

{ "_id" : ObjectId("5c6aa29a64f3d70fcc9147f7"), "StudentName" : "Larry", "StudentAge" : 35, "StudentMarks" : 89 }

update() 메서드로 문서 수정하기

이제 $set 연산자와 함께 update() 메서드를 사용하여 StudentAge 필드의 값을 35에서 24로 변경해 보겠습니다.

> db.updateInformation.update({StudentAge:35},{$set:{StudentAge:24}});

실행 결과는 다음과 같습니다.

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

여기서 nMatched는 조건에 일치한 문서 수, nModified는 실제로 수정된 문서 수를 의미합니다. nUpserted가 0이라는 것은 새 문서가 추가되지 않고 기존 문서만 수정되었다는 뜻입니다.

수정 결과 확인하기

pretty() 메서드를 함께 사용하면 문서를 들여쓰기가 적용된 가독성 좋은 형태로 출력할 수 있습니다.

> db.updateInformation.find().pretty();

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

{
    "_id" : ObjectId("5c6aa29a64f3d70fcc9147f7"),
    "StudentName" : "Larry",
    "StudentAge" : 24,
    "StudentMarks" : 89
}

위 출력에서 확인할 수 있듯이 StudentAge 필드가 이전 값인 35에서 24로 성공적으로 업데이트되었습니다.

참고: 최신 버전에서 권장되는 방식

update() 메서드는 구버전 방식으로, MongoDB 4.2 이후부터는 하나의 문서만 수정할 때는 updateOne(), 여러 문서를 한 번에 수정할 때는 updateMany() 사용이 권장됩니다. 사용법은 동일하게 첫 번째 인자에 조건, 두 번째 인자에 $set 등의 갱신 연산자를 지정하면 됩니다.