대규모 컬렉션의 경우 forEach()와 함께 업데이트 명령을 사용할 수 있습니다. 먼저 문서로 컬렉션을 생성하겠습니다.
>db.addingNewPropertyDemo.insertOne({"StudentName":"John","StudentAge":23,"CountryName":"US"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ca1e61866324ffac2a7dc56")
}
>db.addingNewPropertyDemo.insertOne({"StudentName":"David","StudentAge":21,"CountryName":"AUS"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ca1e62366324ffac2a7dc57")
}
>db.addingNewPropertyDemo.insertOne({"StudentName":"Bob","StudentAge":21,"CountryName":"UK"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ca1e62d66324ffac2a7dc58")
} 다음은 find() 메서드를 사용하여 컬렉션의 모든 문서를 표시하는 쿼리입니다.
> db.addingNewPropertyDemo.find().pretty();
그러면 다음과 같은 출력이 생성됩니다.
{
"_id" : ObjectId("5ca1e61866324ffac2a7dc56"),
"StudentName" : "John",
"StudentAge" : 23,
"CountryName" : "US"
}
{
"_id" : ObjectId("5ca1e62366324ffac2a7dc57"),
"StudentName" : "David",
"StudentAge" : 21,
"CountryName" : "AUS"
}
{
"_id" : ObjectId("5ca1e62d66324ffac2a7dc58"),
"StudentName" : "Bob",
"StudentAge" : 21,
"CountryName" : "UK"
} 다음은 대규모 컬렉션의 각 문서에 새 속성을 추가하는 쿼리입니다.
> db.addingNewPropertyDemo.find().forEach(function(data){ db.addingNewPropertyDemo.update({_id: data._id}, {$set: { StudentNameInUpperCase: data.StudentName.toUpperCase() }}) }); 새 속성이 추가되었는지 확인합니다.
> db.addingNewPropertyDemo.find().pretty();
다음은 새 속성도 표시하는 출력입니다.
{
"_id" : ObjectId("5ca1e61866324ffac2a7dc56"),
"StudentName" : "John",
"StudentAge" : 23,
"CountryName" : "US",
"StudentNameInUpperCase" : "JOHN"
}
{
"_id" : ObjectId("5ca1e62366324ffac2a7dc57"),
"StudentName" : "David",
"StudentAge" : 21,
"CountryName" : "AUS",
"StudentNameInUpperCase" : "DAVID"
}
{
"_id" : ObjectId("5ca1e62d66324ffac2a7dc58"),
"StudentName" : "Bob",
"StudentAge" : 21,
"CountryName" : "UK",
"StudentNameInUpperCase" : "BOB"
} 위의 샘플 출력을 보면 StudentNameInUpperCase 속성이 추가되어 있습니다.