MongoDB 데이터 수정으로 올라온 글이 아직 없는 것 같아서 올려봅니다. 

 

우선 예제 데이터는 강철지그님이 이전에 올려주신 예제의 일부를 사용하도록 하겠습니다.

> db.jeeg.find()
{ "_id" : ObjectId("54cc5315f9b3e67df04fc9e2"), "city" : "seoul" }
{ "_id" : ObjectId("54cc54ebf9b3e67df04fc9e3"), "city" : "newyork" }	 

 

MongoDB에서는 update 명령어와 $set 이라는 operator를 사용하여 데이터를 수정할 수 있는데

이 $set 의 역할은 (1) 기존에 있는 field 일 경우 그 값을 수정하는 것과, (2) 기존에 없는 field 일 경우 새로운 field 와 값을 삽입하는 것으로 나눌 수 있습니다.

$set 을 사용하여 데이터를 수정하는 기본 문법은 아래와 같습니다.

> db.jeeg.update({ <con_field> : <con_value> }, { $set : { <field1> : <value1>, ... })

 

con_field 와 con_value 는 조건이 되는 값을 의미하고 $set 뒤에 오는 field 와 value는 새로 지정할 값을 의미합니다.

아래 예제를 통해 쉽게 보도록 하겠습니다. 

> db.jeeg.update({ "city" : "newyork" }, { $set : { "country" : "usa" }})
> db.jeeg.find()
{ "_id" : ObjectId("54cc5315f9b3e67df04fc9e2"), "city" : "seoul" }
{ "_id" : ObjectId("54cc54ebf9b3e67df04fc9e3"), "city" : "newyork", "country" : "usa" }

 

조건인 city = newyork 을 만족하는 데이터에 기존에 없던 필드와 값이 추가된 것을 볼 수 있습니다. 

기존에 있는 필드의 값을 바꾸는 것도 같은 방법으로 수정이 가능합니다.

> db.jeeg.update({ "country" : "usa" }, { $set : { "city" : "seattle" }})
> db.jeeg.find()
{ "_id" : ObjectId("54cc5315f9b3e67df04fc9e2"), "city" : "seoul" }
{ "_id" : ObjectId("54cc54ebf9b3e67df04fc9e3"), "city" : "seattle", "country" : "usa" }

 

또한 같은 방법으로 여러 개의 필드와 값을 한 번에 삽입할 수도 있습니다.

> db.jeeg.update({ "city" : "seoul" }, { $set : { "country" : "korea", "continent" : "asia" }})
> db.jeeg.find()
{ "_id" : ObjectId("54cc5315f9b3e67df04fc9e2"), "city" : "seoul", "country" : "korea", "continent" : "asia" }
{ "_id" : ObjectId("54cc54ebf9b3e67df04fc9e3"), "city" : "seattle", "country" : "usa" }

 

MongoDB는 비정형 데이타이기 때문에 다양하게 update를 이용할 수 있지만 오늘은 기초가 되는 데이터 수정을 알아보았습니다.

MongoDB update 에 관하여 더 자세한 정보를 알고 싶은 분들은 아래 링크를 참고해 주세요.

https://docs.mongodb.org/manual/reference/method/db.collection.update/