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

MongoDB 컬렉션에 필드(열)를 추가하는 방법

MongoDB 컬렉션에 필드(열) 추가하는 방법

MongoDB는 관계형 데이터베이스(RDBMS)와 달리 고정된 테이블 구조가 없는 문서 지향 NoSQL 데이터베이스입니다. 따라서 엄밀히 말하면 '열(column)'이라는 개념 대신 '필드(field)'가 사용되며, 기존 문서들의 스키마를 변경하지 않고도 자유롭게 새로운 필드를 추가할 수 있습니다.

컬렉션의 모든 문서에 새로운 필드를 추가하려면 update() 메서드와 $set 연산자를 함께 사용하면 됩니다.

기본 문법

db.getCollection(yourCollectionName).update({}, {$set: {"yourColumnName": "yourValue"}}, false, true);

여기서 마지막 두 번째 인수 truemulti 옵션으로, 조건에 일치하는 모든 문서를 한 번에 업데이트하겠다는 의미입니다. 이 옵션이 없으면 첫 번째 문서 하나만 수정됩니다.

예제용 컬렉션 생성

문법을 이해하기 위해 먼저 샘플 문서들이 담긴 컬렉션을 만들어 보겠습니다.

> db.addColumnDemo.insertOne({"StudentId":101,"StudentName":"Chris"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5e04d66af5e889d7a519950f")
}
> db.addColumnDemo.insertOne({"StudentId":102,"StudentName":"Robert"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5e04d673f5e889d7a5199510")
}
> db.addColumnDemo.insertOne({"StudentId":103,"StudentName":"David"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5e04d67bf5e889d7a5199511")
}

현재 문서 확인하기

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

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

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

{
    "_id" : ObjectId("5e04d66af5e889d7a519950f"),
    "StudentId" : 101,
    "StudentName" : "Chris"
}
{
    "_id" : ObjectId("5e04d673f5e889d7a5199510"),
    "StudentId" : 102,
    "StudentName" : "Robert"
}
{
    "_id" : ObjectId("5e04d67bf5e889d7a5199511"),
    "StudentId" : 103,
    "StudentName" : "David"
}

새로운 필드(열) 추가하기

이제 모든 문서에 StudentCityName이라는 새로운 필드를 추가해 보겠습니다.

> db.getCollection('addColumnDemo').update({}, {$set: {"StudentCityName": "New York"}}, false, true);
WriteResult({ "nMatched" : 3, "nUpserted" : 0, "nModified" : 3 })

결과 메시지를 보면 nMatched: 3, nModified: 3으로 표시되는데, 이는 세 개의 문서가 모두 성공적으로 업데이트되었음을 의미합니다.

업데이트 결과 확인

다시 find() 메서드로 전체 문서를 조회해 보겠습니다.

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

모든 문서에 새로운 필드가 추가된 것을 확인할 수 있습니다.

{
    "_id" : ObjectId("5e04d66af5e889d7a519950f"),
    "StudentId" : 101,
    "StudentName" : "Chris",
    "StudentCityName" : "New York"
}
{
    "_id" : ObjectId("5e04d673f5e889d7a5199510"),
    "StudentId" : 102,
    "StudentName" : "Robert",
    "StudentCityName" : "New York"
}
{
    "_id" : ObjectId("5e04d67bf5e889d7a5199511"),
    "StudentId" : 103,
    "StudentName" : "David",
    "StudentCityName" : "New York"
}

참고: 최신 버전에서는 updateMany() 사용 권장

MongoDB 4.2 이상 버전에서는 위와 같은 update() 메서드의 multi 옵션 방식이 deprecated(사용 중단 예정) 상태이므로, 여러 문서를 한꺼번에 수정할 때는 updateMany() 메서드를 사용하는 것이 좋습니다.

> db.addColumnDemo.updateMany({}, {$set: {"StudentCityName": "New York"}});

두 방식 모두 동일한 결과를 제공하지만, 최신 문법을 사용하면 코드의 호환성과 가독성이 더욱 향상됩니다.