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/