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

MongoDB에서 필드를 업데이트하고 기존 데이터를 수정하는 쿼리 방법

MongoDB 필드 업데이트와 기존 데이터 수정

MongoDB에서 특정 필드를 업데이트하고 해당 열(필드)에 현재 저장되어 있는 데이터를 수정하려면 find() 메서드와 update() 메서드를 함께 사용하면 됩니다. 이 방법은 기존 값을 참조하여 새로운 값으로 변환할 때 특히 유용합니다.

먼저 문서가 포함된 컬렉션을 생성해 보겠습니다.

> db.demo115.insertOne({"LastName":"Brown"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e2efe9bd8f64a552dae635a")
}

find() 메서드를 사용하여 컬렉션의 모든 문서를 조회합니다.

> db.demo115.find();

위 명령을 실행하면 다음과 같은 결과가 출력됩니다.

{ "_id" : ObjectId("5e2efe9bd8f64a552dae635a"), "LastName" : "Brown" }

기존 데이터를 활용한 필드 업데이트 쿼리

다음은 현재 컬럼에 있는 데이터를 수정하면서 필드를 업데이트하는 쿼리입니다. forEach()로 각 문서를 순회한 뒤, $set 연산자를 사용해 기존 LastName 값 앞에 새로운 문자열을 붙여 저장합니다.

> db.demo115.find({"LastName":"Brown"}).forEach(function(d) {
... db.demo115.update({_id: d._id}, {$set: {LastName: 'Hello ' + d.LastName}});
... })

업데이트가 완료되면 다시 find() 메서드로 모든 문서를 확인합니다.

> db.demo115.find();

실행 결과는 다음과 같습니다. 기존 값 "Brown"이 "Hello Brown"으로 성공적으로 변경된 것을 확인할 수 있습니다.

{ "_id" : ObjectId("5e2efe9bd8f64a552dae635a"), "LastName" : "Hello Brown" }

정리

이처럼 find()와 update()를 조합하면 문서의 기존 값을 읽어 들여 원하는 형태로 가공한 후 다시 저장할 수 있습니다. 대량의 문서를 일괄적으로 수정해야 하는 경우에도 forEach() 반복문을 활용하면 효율적으로 처리할 수 있습니다.