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

MongoDB 기존 문서에 목록·객체 타입 필드 추가하는 방법 – $set 연산자 활용 가이드

$set 연산자로 필드 추가하기

기존 MongoDB 문서에 특정 데이터 유형(목록, 객체)을 가진 필드를 추가할 때는 $set 연산자를 사용하면 됩니다. 먼저 예제용 컬렉션에 문서를 생성해 보겠습니다.

> db.demo732.insertOne({_id:1,Language:"English"});
{ "acknowledged" : true, "insertedId" : 1 }
> db.demo732.insertOne({_id:2,Language:"Hindi"});
{ "acknowledged" : true, "insertedId" : 2 }

컬렉션의 모든 문서 조회

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

> db.demo732.find();

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

{ "_id" : 1, "Language" : "English" }
{ "_id" : 2, "Language" : "Hindi" }

객체 및 배열 타입 필드 추가 쿼리

다음은 기존 MongoDB 문서에 객체(object) 타입의 details 필드와 배열(list) 타입의 studentDetails 필드를 한 번에 추가하는 쿼리입니다.

> db.demo732.update({_id:1},
... { $set:{details:{'subjectName':"MongoDB"}, studentDetails:[{Name:"David"},{CountryName:"US"}]}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

업데이트가 완료되었으므로, 다시 find() 메서드로 전체 문서를 조회해 보겠습니다.

> db.demo732.find();

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

{ "_id" : 1, "Language" : "English", "details" : { "subjectName" : "MongoDB" }, "studentDetails" : [ { "Name" : "David" }, { "CountryName" : "US" } ] }
{ "_id" : 2, "Language" : "Hindi" }

_id가 1인 문서에만 새로운 필드들이 정상적으로 추가되고, 나머지 문서는 그대로 유지되는 것을 확인할 수 있습니다.

핵심 정리

  • $set은 지정한 필드가 문서에 없으면 새로 생성하고, 이미 존재하면 해당 값을 갱신합니다.
  • 값 자리에 중괄호 {}를 사용하면 객체(내장 문서) 타입 필드가, 대괄호 []를 사용하면 배열(목록) 타입 필드가 추가됩니다.
  • 여러 필드를 하나의 $set 안에 동시에 지정할 수 있어, 한 번의 업데이트로 여러 필드를 추가할 수 있습니다.
  • 참고로 최신 MongoDB 버전에서는 update() 대신 updateOne() 또는 updateMany() 메서드 사용이 권장됩니다.